В настоящее время я портирую программное обеспечение на C с Tru64 на Linux Suse 11.
В Tru64 они устанавливают значение параметра сокета SO_SNDLOWAT
на 1024 * 64
. В Linux этот параметр нельзя изменить, и его значение равно 1.
Я хочу выяснить, каковы будут последствия, если не установить SO_SNDLOWAT
на 1024 * 64
в программном обеспечении. исполнение в Linux.
Проблема в том, что я нашел два определения (интерпретации) цели SO_SNDLOWAT
:
Найдено на странице руководства сокета в Linux:
SO_SNDLOWAT
{{1} } Укажите минимальное количество байтов в буфере, пока уровень сокета не передаст данные протоколу
Я понял, что он указывает минимальное количество байтов в буфере для продолжения (в данном случае для отправки сообщение). Буфер должен быть заполнен как минимум на SO_SNDLOWAT
байт, чтобы продолжить работу
Обнаружено в книге « Сетевое программирование UNIX: Сетевой API сокетов У. Ричарда Стивенса, Билла Феннера, Эндрю М. Rudoff "
Метка низкого уровня отправки - это количество доступного пространства, которое должно существовать в буфере отправки сокета, чтобы select возвратил" доступный для записи ".
Я понял, что для записи в буфер сокета (независимо от размера того, что я пишу) в буфере должно быть не менее SO_SNDLOWAT
байт.
Я не знаю, что делать с SO_SNDLOWAT
.