Java套接字:如何防止Java.net.BindException
我在同一台计算机上实现了一个局域网游戏和测试,方法是:创建一个类,在这个类的不同线程中创建一个服务器和一个客户端,然后连接在一起 在我关闭两个windows客户机和服务器并再次执行上述步骤后:运行java类,创建一个服务器和一个客户机。我总是遇到这样的错误:java.net.BindException,因为这个端口以前创建过,现在还没有关闭 每次我创建服务器套接字时,在catch中,我总是将serverSocket.close放入。但这个错误仍然困扰着我。请给我一些想法来防止这种情况 @:如果我们知道已经创建了一个端口,我们可以关闭它并创建新的端口吗Java套接字:如何防止Java.net.BindException,java,sockets,serversocket,Java,Sockets,Serversocket,我在同一台计算机上实现了一个局域网游戏和测试,方法是:创建一个类,在这个类的不同线程中创建一个服务器和一个客户端,然后连接在一起 在我关闭两个windows客户机和服务器并再次执行上述步骤后:运行java类,创建一个服务器和一个客户机。我总是遇到这样的错误:java.net.BindException,因为这个端口以前创建过,现在还没有关闭 每次我创建服务器套接字时,在catch中,我总是将serverSocket.close放入。但这个错误仍然困扰着我。请给我一些想法来防止这种情况 @:如果我
谢谢:您应该将serverSocket.close放在finally块中,并可能在尝试再次绑定到该地址之前等待几秒钟。您应该将serverSocket.close放在finally块中,并可能在尝试再次绑定到该地址之前等待几秒钟。除非出现异常,否则不会运行catch块中的任何内容他被抓住了。相反,将close调用放在finally块中,以确保它始终运行。除非捕获异常,否则放在catch块中的任何内容都不会运行。相反,将close调用放在finally块中,以确保它始终运行。在通道上调用close之后可能还不够。请参见此处的说明: TCP连接可以保持在CLOSE-WAIT或TIME-WAIT状态。 你可以重复使用这个地址,这样你就可以重复使用eaddr了,但这对我不起作用。 最好是准确等待网络级别上为CLOSE-wait或TIME-wait设置的超时。在调用通道上的CLOSE之后可能还不够。请参见此处的说明: TCP连接可以保持在CLOSE-WAIT或TIME-WAIT状态。 你可以重复使用这个地址,这样你就可以重复使用eaddr了,但这对我不起作用。 最好的方法是准确地等待网络级别上为CLOSE-wait或TIME-wait设置的超时