Pode ler function () sobre um socket conectado retornar zero bytes?
-
19-09-2019 - |
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?
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