Semro, Можете объявить сразу структуру с нужным набором полей и читать непосредственно в нее.
Самой fread пофигу какой тит данных она читает - она читает быйты, а как уж вы там эти байты будете интерпретировать не ее дело (поэтому ей на вход передается void*).
Если будете читать сразу в структуру, то описание структуры нужно заключить в
shadow было в XP (было ли до нее не знаю), пользовался этой фишкой постоянно. В RDP 8.0 микрософт решил, что shadow не нужно и убрал эту возможность (заменили на удаленного помощника), но потом, видимо "под нажимом общественности", вернули обратно.
Установите виртуалку с XP или Вин2003 и с нее подключайтесь, или уже с Вин10.
по второму вопросу - какой порт открывает клиент не зависит от того за НАТ он или нет. Обычно клиенты не знают за НАТ они или нет. Для клиента НАТ - прозрачный, т.е. его как-бы и нет.
Dim,
1. Да - имеется ввиду порт сервера
2.Обычно, клиент открывает рандомные порты (веб браузер, например, на каждый запрос открывает новую TCP сессию с новым локальным портом). Это можно легко увидеть поставив на свой комп шейпер перехватывая трафик на удаленные TCP/80 и TCP/443 и несколько раз в это время в браузере обновить страницу. Но на самом деле это зависит от протокола. Для HTTP/HTTPS/RDP/SMTP/POP3/IMAP это так. Для FTP - нет.
И да, я писал не про веб морду роутера, а про сайт компании. Просто предположил, что раз у вас есть роутер и за ним RDP шлюз, то речь идет о компании и довольно приличной (иначе зачем RDP шлюз? Для мелких компаний обычно достаточно одного сервера терминалов), а в этом случае логично предположить, что у компании есть и сайт, который может висеть на 443 порту, т.к. https сейчас используется повсеместно.
Но обмен ведь двусторонний, разве это не означает что на стороне клиента тоже должен быть открыть порт, чтобы он мог куда то получить данные?
Конечно означает, со стороны клиента открывается любой произвольный (динамический) порт в диапазоне от 1024 до 65535 (на разных ОС диапазон динамических портов может быть разным).
TCP сессия однозначно идентифицируется адресом и портом обеих сторон соединения. HTTP, HTTPS, SSL - это все TCP сессии.
У роутера два сетевых интерфейса (как минимум) - один смотрит в инет (WAN, внешний), другой смотрит в LAN (внутренний), IP адреса у этих интерфейсов разные. Если веб морда роутера выставлена на ружу (на внешний интерфейс), то да будет конфликт. Но обычно веб морды роутеров не выставляют в инет, поэтому, как правило и проблемы нет.
Это может повлиять только на сайт компании, если он то же висит на 443 порту.
Разница в том, что в вашем случае 443 порт - это порт на вашем роутере, а когда человек за роутером идет на сайт в интернет на 443 порту, то этот порт где-то там в интернете и к вашему порту никакого отношения не имеет.
Алексей Майрин, В конструктор перемещения всегда передается временный объект, который обычно уничтожается после выхода из конструктора, поэтому можно сэкономить и например не выделять память и копировать что-нибудь, а забирать указатели из переданного объекта, а там их обнулять. Так же есть и парная операция присваивания с такой же семантикой.
Виталий, Откомпилируйте вашу программу в VS с добавлением ключа -Wall и посмотрите какие функции компилятор "инлайнит" сам, с какими inline соглашается с вами, а с какими не соглашается.
Для gcc аналогичной опции не знаю.
На вашу последнюю формулировку ответ могут дать только разработчики конкретного компилятора.
Если же взять формулировку из темы, то ответ прост: в плане быстродействия всегда inline эффективнее вызовов, в плане размера программы - всегда функции предпочтительнее встраивания.
Учитывая, что практически не возможно написать мало мальски сложную программу без использования функций, то на ваш вопрос нет однозначного ответа. Так как требования размера и быстродействия противоречивы, то всегда нужно искать компромисс.
Обычно, вы, как программист, знаете какой участок кода у вас критичный по скорости, именно в нем и следует применять inline и другие оптимизации. На остальной код обычно не стоит тратить много времени для оптимизаций, главное чтоб работал без ошибок и был легко сопровождаемым.
Илья, Остальное уже и самому можно додумать.
Как я себе это представляю:
На низком уровне классы это те же структуры в памяти. Одна тонкость - виртуальные функции, в объекте есть ссылка на таблицу виртуальных функций класса и все виртуальные методы вызываются через эту ссылку. Для множественного наследования, видимо, есть несколько ссылок на таблицы виртуальных функций. Все остальные плюшки ООП в С++ реализуются на уровне компилятора, т.е. в откомпилированном виде их уже нет.
Вот нагуглил пару статей: www.pvsm.ru/c-3/29071 korobchinskiy.com/virtualnye-funkcii
Самой fread пофигу какой тит данных она читает - она читает быйты, а как уж вы там эти байты будете интерпретировать не ее дело (поэтому ей на вход передается void*).
Если будете читать сразу в структуру, то описание структуры нужно заключить в