gpt4 book ai didi

java - 如何在按下按钮时正确关闭/启动服务器套接字JAVA

转载 作者:行者123 更新时间:2023-12-01 12:20:22 25 4
gpt4 key购买 nike

我只是想知道是否有正确的方法来关闭服务器套接字并使用它所使用的相同端口再次启动它。我正在编写一个FTP程序,用户可以通过GUI关闭它或启动服务器。现在,我单击按钮启动它,一切正常,再次单击它,它停止,但是当尝试启动它时,它抛出异常。

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();
}

对于这个问题,我将不胜感激。提前致谢。

最佳答案

ServerSocket soc = new ServerSocket(port);

将其更改为

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

这告诉 TCP 允许套接字绑定(bind)到已在使用的端口,可能是旧的 TIME_WAIT 状态。

关于java - 如何在按下按钮时正确关闭/启动服务器套接字JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com