2014-11-03 65 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