Что такое назначение параметра сокета SO_SNDLOWAT

В настоящее время я портирую программное обеспечение на C с Tru64 на Linux Suse 11. В Tru64 они устанавливают значение параметра сокета SO_SNDLOWAT на 1024 * 64 . В Linux этот параметр нельзя изменить, и его значение равно 1.

Я хочу выяснить, каковы будут последствия, если не установить SO_SNDLOWAT на 1024 * 64 в программном обеспечении. исполнение в Linux.

Проблема в том, что я нашел два определения (интерпретации) цели SO_SNDLOWAT :

  1. Найдено на странице руководства сокета в Linux:

    SO_SNDLOWAT
    {{1} } Укажите минимальное количество байтов в буфере, пока уровень сокета не передаст данные протоколу

    Я понял, что он указывает минимальное количество байтов в буфере для продолжения (в данном случае для отправки сообщение). Буфер должен быть заполнен как минимум на SO_SNDLOWAT байт, чтобы продолжить работу

  2. Обнаружено в книге « Сетевое программирование UNIX: Сетевой API сокетов У. Ричарда Стивенса, Билла Феннера, Эндрю М. Rudoff "

    Метка низкого уровня отправки - это количество доступного пространства, которое должно существовать в буфере отправки сокета, чтобы select возвратил" доступный для записи ".

    Я понял, что для записи в буфер сокета (независимо от размера того, что я пишу) в буфере должно быть не менее SO_SNDLOWAT байт.

Я не знаю, что делать с SO_SNDLOWAT .

7
задан Alexis Wilke 4 April 2019 в 01:27
поделиться