Необходимо ли думать тщательно об изменениях со временем, управлении версиями, устойчивости, совместимости, и т.д.
, Если существует два приложения, которые используют общий код, Вы хотите вынудить те приложения измениться вместе, в случае, если они должны быть совместимы друг с другом? Тогда используйте dll. Весь exe's будет использовать тот же код.
Или делают Вы хотите изолировать их друг от друга, так, чтобы можно было измениться один и быть уверены, что Вы не повредили другой. Тогда используйте статический lib.
ад DLL - когда, вероятно, НЕОБХОДИМО было использовать статический lib, но Вы использовали dll вместо этого, и не весь exes совместимы с ним.
Никакой разницы быть не должно. Цитата из man 2 send
:
Единственное различие между
send ()
иwrite ()
- это наличие флагов. При нулевом параметре флаговsend ()
эквивалентенwrite ()
.
Если вы не хотите указывать флаги и для send ()
, вы можете свободно использовать write ()
.
write
vs send
для одного байта, или один массив, вероятно, не будет сильно отличаться - они скоро получат один и тот же путь кода (в конечном итоге они выполняют одну и ту же операцию). Маловероятно, что накладные расходы при передаче по сети будут на этом уровне; это будет фактическое TCP-соединение и перемещение битов по проводам.
Однако, если вы намереваетесь отправлять большие, состоящие из нескольких частей сообщения за один раз, вам следует посмотреть на системный вызов sendmsg ()
- это позволяет вы должны указать список несмежных массивов данных для отправки.
В конце дня применяются обычные правила - сначала напишите приложение, а затем выполните тест, чтобы увидеть, где ваши узкие места.
recv
and send
allow you to specify flags, such as for out-of-band packets. If you don't need to specify the flags, read
and write
are perfectly adequate.