Когда данные отправляются через сокет, когда send / write возвращает -1? - PullRequest
1 голос
/ 11 ноября 2010

Linux.Сокет Tcp.

Когда команда send () / write () не работает?

Возвращает ли -1, только если буфер отправки TCP в переполнении ядра?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2010

Из определения OpenGroup для write ():

После успешного завершения write () [XSI] и pwrite () должны вернуть количество байтов, фактически записанных вфайл, связанный с fildes.Это число никогда не должно превышать n байтов.В противном случае должно быть возвращено -1 и установлено значение errno, указывающее на ошибку.

То же самое делается для send () - OpenGroup страница для send ()

Вы узнаете больше информации, посмотрев на errno.Для получения дополнительной информации см. Страницу OpenGroup на errno.

0 голосов
/ 11 ноября 2010

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

Если вызов записи был неблокирующим , и буферы были заполнены, вы получили бы ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...