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;
}
}