正常斷開連接情況下,判斷非阻塞模式socket連接是否斷開


摘自: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  正常
    其它情況    關閉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM