Può leggere funzione () su un socket connesso ritorno zero byte?
-
19-09-2019 - |
Domanda
So che read () è una chiamata di blocco a meno che non faccio la presa non bloccante. Quindi mi aspetto read () chiamata che richiede 4 KB di dati dovrebbe restituire un valore positivo (non di byte letti) o -1 in caso di errore (possibile reset connessione ecc cliente). La mia domanda è: posso leggere () return '0' in ogni occasione?
Io sono la manipolazione del read () in questo modo:
if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0)
{
}
else
{
buf[readval] = 0;
//Do some thing with data
}
Questa bombe di codice se read () restituire zero e so come risolvere il problema. Ma è possibile per read () per restituire zero?
Soluzione
Quando una connessione TCP è chiuso su un lato di lettura () sulle altre rendimenti laterali 0 byte.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow