Pergunta

Eu sei que read () é uma chamada de bloqueio, excepto se eu fizer o non-blocking socket. Por isso espero ler () chamada que solicita 4K de dados deve retornar um valor positivo (sem de bytes lidos) ou -1 em caso de erro (redefinição de conexão possível pelo cliente etc). A minha pergunta é: Pode ler (regresso) '0' em qualquer ocasião?

Eu estou lidando com o read () desta forma:

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

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

Este código bombas se read () retorno de zero e eu sei como corrigi-lo. Mas é possível para leitura () para retornar zero?

Foi útil?

Solução

Quando uma ligação TCP é fechada sobre uma leitura lado () sobre os outros retornos laterais byte 0.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top