鍍金池/ 問答/C  Linux/ 非阻塞狀態(tài)下recv返回值問題

非阻塞狀態(tài)下recv返回值問題

recv函數(shù)非阻塞狀態(tài)下沒有數(shù)據(jù)返回值為0,如果客戶端關(guān)閉返回值也是0,如何區(qū)別這兩個狀態(tài)呢?

回答
編輯回答
朕略傻

非阻塞模式下,沒有數(shù)據(jù)返回值是-1,并且錯誤碼是EAGAIN or EWOULDBLOCK。

2017年4月6日 12:17
編輯回答
避風(fēng)港

默認(rèn) recv 應(yīng)該是阻塞的,當(dāng)設(shè)置 MSG_DONTWAIT 或者套接字的描述符帶有 O_NONBLOCK 選項,在沒有數(shù)據(jù)情況下,應(yīng)該返回的是 -1,并設(shè)置errno為 EAGAIN 或者 EWOULDBLOCK

2017年4月11日 09:28