我還沒有找到明確的答案在這一個。套接字編程的最佳實踐是什麼 - 每次都關閉還是保持打開狀態?
我在Java 7中有一個客戶端/服務器應用程序。服務器和客戶端在單獨的計算機上。客戶端有一個短的(1行10個字符)命令發佈到服務器,服務器響應(120個字符的字符串)。這將每隔X秒重複一次 - 其中X是配置文件中的速率。這可能短至1秒到Integer.MAX_VALUE秒。每當我創建客戶端/服務器應用程序時,哲學就創建了連接,完成業務,關閉連接,然後對數據執行其他任何操作。這似乎是事情應該完成的方式 - 特別是在使用資源編程嘗試時。
什麼是打開一個套接字連接掛在那裏X秒的打嗝?關閉並重新啓動是否是一個最佳實踐,或者對於套接字保持連接並且每隔X秒發送一次命令更好一些?
如果您未使用非阻塞IO,則打開套接字連接通常意味着每個客戶端連接都會在服務器的線程池中佔用一個線程。如果您可以使用非阻塞IO,則將連接打開將更有效。如果你發現它死了,重新建立它。 –
打開一個插座被認爲是一個「昂貴的」操作 – RCB
因此,這是一個昂貴的操作與線程閒置的平衡嗎? – user2363027