Влияние производительности использования записи () вместо отправляет () при записи в сокет

Необходимо ли думать тщательно об изменениях со временем, управлении версиями, устойчивости, совместимости, и т.д.

, Если существует два приложения, которые используют общий код, Вы хотите вынудить те приложения измениться вместе, в случае, если они должны быть совместимы друг с другом? Тогда используйте dll. Весь exe's будет использовать тот же код.

Или делают Вы хотите изолировать их друг от друга, так, чтобы можно было измениться один и быть уверены, что Вы не повредили другой. Тогда используйте статический lib.

ад DLL - когда, вероятно, НЕОБХОДИМО было использовать статический lib, но Вы использовали dll вместо этого, и не весь exes совместимы с ним.

13
задан Nikolai Fetissov 8 July 2009 в 20:55
поделиться

3 ответа

Никакой разницы быть не должно. Цитата из man 2 send :

Единственное различие между send () и write () - это наличие флагов. При нулевом параметре флагов send () эквивалентен write () .

Если вы не хотите указывать флаги и для send () , вы можете свободно использовать write () .

20
ответ дан 1 December 2019 в 21:12
поделиться

write vs send для одного байта, или один массив, вероятно, не будет сильно отличаться - они скоро получат один и тот же путь кода (в конечном итоге они выполняют одну и ту же операцию). Маловероятно, что накладные расходы при передаче по сети будут на этом уровне; это будет фактическое TCP-соединение и перемещение битов по проводам.

Однако, если вы намереваетесь отправлять большие, состоящие из нескольких частей сообщения за один раз, вам следует посмотреть на системный вызов sendmsg () - это позволяет вы должны указать список несмежных массивов данных для отправки.

В конце дня применяются обычные правила - сначала напишите приложение, а затем выполните тест, чтобы увидеть, где ваши узкие места.

1
ответ дан 1 December 2019 в 21:12
поделиться

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.

6
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: