提问人:Archonic 提问时间:12/12/2022 更新时间:12/12/2022 访问量:29
java.net.BindException,即使我正确地关闭了我的套接字
java.net.BindException even though I'm properly closing my sockets
问:
我目前正在尝试创建一个程序来测试 TCP 和 UDP 之间的通信速度。但是,我遇到了一个问题。在第二次试验中调用客户端方法时,它会崩溃并出现以下错误:connectTCP
Exception in thread "main" java.net.BindException: Address already in use (Bind failed)
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:513)
at java.net.Socket.bind(Socket.java:661)
at me.gabriel.sciencefair.TestClient.connectTCP(TestClient.java:30)
at me.gabriel.sciencefair.ClientController.main(ClientController.java:9)
我不确定为什么会这样。我可能会一遍又一遍地调用该方法,但我正确地断开了套接字,这应该足以让套接字解绑,对吧?此外,在服务器端,程序运行良好,并耐心等待客户端连接以进行另一次试用(不会发生)。connectTCP
起初,我在 UDP 上收到此错误,因为(非常合乎逻辑)我对客户端和服务器使用相同的地址/端口。我通过在服务器和客户端添加两个常量来解决这个问题,分别称为 和 。对于这两个,分别是 和 is 以及客户端和服务器。两者都绑定到它们的 IP 和 PORT,并连接到 and(分别为客户端和服务器)方法的参数中指定的 ip 和端口。我一遍又一遍地运行这些方法,无论我在实验中需要多少次试验。在第二次试验中,客户端抛出错误。MY_IP
MY_PORT
MY_IP
localhost
MY_PORT
12344
12345
connectTCP()
startTCP()
我的代码可以在 https://github.com/Archonic944/ProtocolSpeedTest 查看。
答:
评论