摘自:http://blog.chinaunix.net/uid-15014334-id-3429627.html
在UNIX/LINUX下,
1,對於主動關閉的SOCKET, recv返回-1,而且errno被置為9(#define EBADF 9 /* Bad file number */)或104 (#define ECONNRESET 104 /* Connection reset by peer */)
2,對於被動關閉的SOCKET,recv返回0,而且errno被置為11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
3,對正常的SOCKET, 如果有接收數據,則返回>0, 否則返回-1,而且errno被置為11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
因此對於簡單的狀態判斷(不過多考慮異常情況),
recv返回>0, 正常
返回-1,而且errno被置為11 正常
其它情況 關閉