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?

È stato utile?

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
scroll top