2014-11-03 111 views
0

我只想知道是否有正確的方法來關閉服務器套接字並使用它使用的同一端口重新啓動它。我正在編寫一個FTP程序,用戶可以關閉它或通過GUI啓動服務器。現在,我點擊按鈕啓動它,一切正常,再次單擊它,它會停止,但試圖嘗試啓動它時,它會引發異常。如何在按下按鈕時正確關閉/啓動服務器插座JAVA

Address already in use: JVM_Bind 

我的代碼如下

public static void listen(int port) throws IOException { 
    ServerSocket soc = new ServerSocket(port); 
    System.out.println("FTP Server Started on Port Number " + port); 
    while (online) { 
     System.out.println("Waiting for Connection ..."); 
     transferfile t = new transferfile(soc.accept()); 
    } 
    soc.close(); 
} 

我希望在這個問題上的任何幫助。提前致謝。

回答

1
ServerSocket soc = new ServerSocket(port); 

更改爲

ServerSocket soc = new ServerSocket(); 
soc.setReuseAddress(true); 
soc.bind(new InetSocketAddress(port)); 

這告訴TCP允許套接字綁定到一個端口已在使用中,可能是由老TIME_WAIT狀態。

+0

完美。有效。謝謝。 – ditmark12 2014-11-03 01:05:52

相關問題