0
我在製作客戶端服務器應用程序。以前在應用程序中,如果客戶端關閉,服務器將嘗試重新連接(即,如果服務器端的recv()
返回0值,服務器將返回接受連接)。現在我想通過允許它連接到多個客戶端來修改服務器。我想過使用poll()
,因此服務器可以在每個客戶端上檢查一段時間。我想知道poll
如何檢查客戶端連接是否丟失?使用poll進行連接丟失檢測()
我在製作客戶端服務器應用程序。以前在應用程序中,如果客戶端關閉,服務器將嘗試重新連接(即,如果服務器端的recv()
返回0值,服務器將返回接受連接)。現在我想通過允許它連接到多個客戶端來修改服務器。我想過使用poll()
,因此服務器可以在每個客戶端上檢查一段時間。我想知道poll
如何檢查客戶端連接是否丟失?使用poll進行連接丟失檢測()
當poll
使用多重IO,可以處理連接關閉與下列事件:
POLLIN
當有數據讀取,當你做了read
或recv
函數調用,請確保您檢查返回值(通常爲返回值0
)表示連接已關閉。這與您之前的單一客戶端版本相同。
POLLRDHUP
這表明對方已關閉連接,或關閉寫入連接的一半。
POLLERR
其他錯誤。
當三個事件觸發時,這意味着客戶端已經關閉了連接,或者在套接字上有錯誤,通常關閉套接字。