2011-05-26 37 views
0

我正在用Java編寫套接字程序,有時會出現此錯誤。我有一些問題:一些與「使用中的地址:JVM_Bind」有關的問題

1)我使用Eclipse來運行我的套接字應用程序,並最後點擊「終止」,但有時仍然得到該錯誤。爲什麼?

2)有沒有什麼辦法通過編程方式關閉端口?事情是這樣的:

if(isPortOpen(portNumber)) { 
    closePort(portNumber); 
} 
//// Run my app here 

3)有什麼辦法避免這種錯誤(編程或OS)?

回答

1
  1. 理想情況下,應用程序被終止時,應關閉打開的端口。
  2. 如果您有該端口的套接字對象,那麼socket.close()應該關閉該端口。
  3. 但在Java中,你不能關閉其他一些程序
  4. 打開一個端口,您可以使用TCPView關閉未發行的端口
+0

謝謝,我用它來手動關閉端口。 :) – Emerald214 2011-05-28 12:05:58

2

套接字選項SO_REUSEADDR可以幫助重新使用先前已端口正在使用中(一個程序幾秒前終止)。

只需創建一個未連接的插座,連接套接字之前使用

socket.setReuseAddress(true); 

,然後將其連接。

請參閱有關的TCPView的javadocthis SO post