多年來我一直在想知道在Java中關閉一個ServerSocket的正確方法是什麼。我的實現總是像這樣工作,他們:Java - 關閉一個沒有例外的ServerSocket?
- 創建一個新的ServerSocket(int)。
- 在while(true)循環中啓動一個調用其accept()方法的線程。
- 當accept()返回(客戶端連接)從客戶端讀取直到它斷開連接時啓動另一個線程。接受線程繼續進行另一個accept()調用。
但是,當我想關閉ServerSocket是因爲我的應用程序正在退出,除了調用它的close()方法(關閉所有客戶端套接字之後)之外,我從未找到另一種方法,導致accept()拋出一個SocketException異常,我接受並從accept線程中的while(true)循環中斷開,導致我的所有線程退出。
我覺得這很醜陋,嚴格來說沒有異常發生,關閉我的ServerSocket是我的程序正常運行的一部分。
是否真的沒有其他方式做到這一點,而不會導致異常被拋出?
謝謝。
似乎沒有辦法:http://stackoverflow.com/questions/9681531 –
可能重複[優雅的關機服務器套接字在Linux](http://stackoverflow.com/questions/9681531/graceful-shutdown-server-插座在Linux的) – laune