Может считать () функцию на связанном нуле возврата сокета байты?

Я знаю, что читает (), блокирующийся вызов, если я не делаю неблокирование сокета. Таким образом, я ожидаю чтение () вызов, который запрашивает, чтобы 4K данных возвратил положительное значение (никакое чтение байтов) или-1 на ошибке (возможное соединение, сброшенное клиентом и т.д.). Мой вопрос: Может читать (), возвращаются '0' в каком-либо случае?

Я обрабатываю чтение () этот путь:

   if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0)
    {

    }
    else
    {
       buf[readval] = 0;
       //Do some thing with data  
    }

Этот код бомбит, если считано () нуль возврата, и я знаю, как зафиксировать его. Но для чтения () действительно ли возможно возвратить нуль?

28
задан fant0me 9 June 2016 в 17:06
поделиться

1 ответ

Когда TCP-соединение закрывается с одной стороны, функция read () с другой стороны возвращает 0 байт.

51
ответ дан 28 November 2019 в 03:13
поделиться
Другие вопросы по тегам:

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