2016-05-09 30 views
0

我在製作客戶端服務器應用程序。以前在應用程序中,如果客戶端關閉,服務器將嘗試重新連接(即,如果服務器端的recv()返回0值,服務器將返回接受連接)。現在我想通過允許它連接到多個客戶端來修改服務器。我想過使用poll(),因此服務器可以在每個客戶端上檢查一段時間。我想知道poll如何檢查客戶端連接是否丟失?使用poll進行連接丟失檢測()

回答

0

poll使用多重IO,可以處理連接關閉與下列事件:

  • POLLIN當有數據讀取,當你做了readrecv函數調用,請確保您檢查返回值(通常爲返回值0)表示連接已關閉。這與您之前的單一客戶端版本相同。

  • POLLRDHUP這表明對方已關閉連接,或關閉寫入連接的一半。

  • POLLERR其他錯誤。

當三個事件觸發時,這意味着客戶端已經關閉了連接,或者在套接字上有錯誤,通常關閉套接字。