在linux中,如何確定TCP套接字的狀態? 我在這個主題中搜索了很多,但我沒有找到真正有用的解決方案。 我最追逐的說法是:將某些東西寫入套接字,如果連接關閉,它將失敗。 但是如果流的內容被綁定,並且a可能不會在流中寫入任何垃圾? 我另一方面netstat可以確定套接字狀態,但如果我想實施基於netstat的解決方案,它將是非常昂貴的。我必須將fileDescriptor解析爲socketID,而不是從/ proc/net/tcp中讀取所有記錄,找到擬合線和測試狀態。如果必須週期性地調用此方法,則效率不高。 這裏有一些其他的速記解決方案嗎?確定tcp連接狀態
0
A
回答
0
你不能。 TCP套接字不具有動態狀態;他們只有先前操作的結果。如果您不在TCP連接上運行,則故意設計爲不改變狀態。它沒有「撥號音」,這是它完全取代SNA這樣的網絡體系結構的根本原因。
0
您必須執行套接字I/O操作以確定連接是否仍然存在。如果你不能寫入套接字,你仍然可以嘗試一個讀取操作(只要它不影響其他讀操作)並查看它是否因連接錯誤而失敗。
相關問題
- 1. TCP CLOSE_WAIT狀態..&新連接
- 2. TCP連接持久狀態
- 3. 確定連接狀態
- 4. 確定套接字連接狀態 - android
- 5. TCP連接掛在CLOSE_WAIT狀態
- 6. 如何獲取TCP連接狀態?
- 7. 春天集成狀態TCP連接
- 8. 如何查詢TCP連接狀態?
- 9. 有關TCP連接和TCP的查詢保持活動狀態?
- 10. 確定TCP連接是否使用SSL
- 11. 頁面刷新後保存TCP套接字(連接)的狀態
- 12. 如何確定客戶端套接字的連接狀態?
- 13. 確定異步服務器中的套接字連接狀態
- 14. 連接狀態102
- 15. mssql連接狀態
- 16. DataList綁定:「連接未關閉,連接的當前狀態爲打開狀態。」
- 17. 如何使用CLOSE_WAIT狀態終止tcp連接
- 18. 控制TCP連接的遠程客戶端狀態
- 19. TCP連接永遠不會處於已建立狀態
- 20. WCF tcp連接在進程死亡時保持打開狀態
- 21. Android:使用tiwlan0來確定Droid的無線連接狀態
- 22. Android如何確定其互聯網連接狀態?
- 23. 理解HTTP連接狀態/狀態
- 24. AVRISPmkII連接狀態:未知狀態0x00
- 25. MCSessionState從連接狀態變爲未連接狀態
- 26. 連接狀態MySql連接器/ NET
- 27. 冰連接狀態,完成與連接
- 28. 確實httplib重用TCP連接?
- 29. Java - TCP連接
- 30. TCP連接
......牢記閱讀不會像寫作那樣暴露網絡問題。 – EJP
寫作並不保證可以揭示它們。在套接字知道連接已斷開/丟失之前,它會高興地保持將出站數據接收到其內部緩衝區,直到最終填滿爲止,然後阻止調用者進一步寫入,直到最終檢測到斷開連接,從而導致寫入失敗。與閱讀相同的東西。當套接字的內部緩衝區爲空時,將不再有數據讀取,阻止調用者讀取,但最終套接字將檢測到斷開連接,導致讀取失敗。 –
這不一樣。寫入強制堆棧發送數據,期待ACK,發送重試,操作重試定時器和計數器......所有這些都可能最終跳閘失敗。閱讀只讀。唯一的失敗條件是讀取超時,並且只能發送到應用程序,而不會在堆棧中導致任何永久性錯誤。 – EJP