Если проблема заключается в дополнительном времени компиляции и раздувании бинарного размера, полученном путем компиляции .h как части всех используемых им .cpp-модулей, во многих случаях то, что вы можете сделать, - это сделать класс шаблона опустившимся из не-шаблонного базовый класс для не зависящих от типа частей интерфейса, и что базовый класс может иметь свою реализацию в файле .cpp.
Я могу создать любой код для приложения EMAIL или приложения FTP, например. Но вопрос: как я могу связать код приложения с сетевыми заголовками? так что теперь предположим, что «s» - это необработанный сокет, который я уже создал.
blockquote>Не используя необработанные сокеты.
Необработанные сокеты полезны только в том случае, если вы создаете низкоуровневый сетевой инструмент, такой как
ping
,mtr
илиnmap
, который специально должен взаимодействовать с нижними уровнями сетевого стека. Большинство типичных сетевых приложений, таких как почтовый клиент или приложение FTP, не нуждаются в этом, поэтому они будут использовать TCP (потоковые) сокеты.Если вы настаиваете на использовании сырых сокетов, вы попадаете в ситуацию, когда вам необходимо переопределить IP и TCP в вашем приложении. Не делай этого.