現在我已經有了一個簡單的TCP服務器/客戶端。我建立了這樣的連接,當客戶端連接時它會被分叉(),並且連接本身被置於一個無限循環中,以便連接保持打開狀態。服務器正在接收來自客戶端的信息,我有一個檢查以確保接收到的字節數大於0.到目前爲止,在確定客戶端是否已斷開連接方面,這一直運行良好。但是,如果服務器斷開連接,客戶端也會關閉,但不會設置errno。我該如何檢查以確保服務器仍然連接?如何處理服務器關閉TCP
0
A
回答
1
當另一端斷開連接時,套接字將變爲可讀(讀取套接字將不會阻塞)並且read()
將返回0
。這是通常檢測到斷開連接的方式(聽起來您已經在服務器端執行此操作)。
如果你封鎖在write()
或嘗試write
由另一方封閉的插座上,你的過程將免費獲贈SIGPIPE
信號和write
將與errno
集中返回-1
到EPIPE
。
SIGPIPE
的默認操作是終止進程,所以如果你沒有改變這個過程,你的客戶端會在它試圖寫入已經消失的服務器時死掉。
+0
就在我讀這個答案之前,我記得通過gdb運行它,看到它是sigpipe。我會給你信貸信用雖然到期。謝謝! – whatWhat
相關問題
- 1. TCP服務器不關閉,
- 2. Ruby TCP服務器關閉
- 3. Erlang TCP服務器處理
- 4. Memcache服務已關閉 - 如何處理?
- 5. 關閉TCP線程服務器
- 6. TCP服務器關閉連接
- 7. Delphi XE3,Indy TCP服務器。關閉服務器
- 8. Recvfrom()掛起 - 服務器關閉時如何處理此問題
- 9. 如何正確關閉asio tcp服務器?
- 10. 如何通知服務器關閉的TCP客戶端
- 11. 關閉和處理WCF服務
- 12. Android:異步任務,HTTP處理程序服務器關閉?
- 13. 如何處理node.js中的CONTROL + C TCP服務器
- 14. 如何在boost tcp/udp服務器中處理control-c
- 15. Grails問題處理Tcp客戶端和Tcp服務器
- 16. 如何處理服務啓動和關閉事件?
- 17. HttpWebRequest如何處理(過早)關閉底層TCP連接?
- 18. selenium rc關閉代理服務器firefox
- 19. 如何TCP服務器永遠服務?
- 20. NSFontPanel - 如何處理關閉
- 21. 如何處理關閉MessageBox
- 22. 如果節點服務器關閉。如何在socket.io上獲取錯誤處理
- 23. 使用批處理文件快速關閉遠程服務器
- 24. 貓鼬網絡服務器是否有關閉處理程序?
- 25. 服務器無法處理請求。連接未關閉
- 26. 當我關閉PYQT MainFrame時,如何關閉多處理器
- 27. 如何關閉等待服務器?
- 28. 如何正確關閉ExpressJs服務器?
- 29. 如何從服務器關閉websocket?
- 30. 如何關閉JBoss AS 7服務器?
你的Q不是很清楚。您想確保服務器在向客戶端傳輸信息時保持連接狀態嗎? – chutsu
您是否在問如何判斷TCP連接的遠端是否已關閉? –
是的,如果服務器隨機斷開連接,我想知道如何處理客戶端。 – whatWhat