Die Verwendung von errno, wenn die Funktion send () und die Funktion Recev Fehler melden

1. Der Rückgabewert der Funktion Recev ():

> 0: empfangene Datengröße;

= 0: die Verbindung ist geschlossen;

<0: Fehler.

 Im Fehlerfall

Unter diesen drei Fehlern wird die Verbindung als normal angesehen und weiterhin empfangen

if (errno == EINTR || (errno == EAGAIN) || errno == EWOULDBLOCK)
                    weiter;

if(FD_ISSET(connfd,&r_set)
    {
        int irecv,iunrecv;
        iunrecv = length;
        while(iunrecv>0)
        {
            irecv = recv(concfd,buff,iunrecv,0)
            if(irecv==0)
            {
                 printf("recv error:%s",strerror(errno));
                 return -1;
            }
            if(irecv<0)            
            {
                if(errno == EINTR ||(errno == EAGAIN)||errno == EWOULDBLOCK)
                    continue;

                 printf("recv error:%s",strerror(errno));
                 return -1;
            }
            iunrecv -= irecv;
            buff += irecv;
        }
    }

 

 

 

Veröffentlichte 100 Originalartikel · gewann 26 · 20.000+ Aufrufe

Ich denke du magst

Origin blog.csdn.net/modi000/article/details/105605034
Empfohlen
Rangfolge