Java 通过套接字连续连接到服务器,直到建立连接
我有一个客户端,我想尝试连续连接到服务器,直到建立连接(即,直到启动服务器) 在第一次尝试之后,我得到了一个Java 通过套接字连续连接到服务器,直到建立连接,java,sockets,Java,Sockets,我有一个客户端,我想尝试连续连接到服务器,直到建立连接(即,直到启动服务器) 在第一次尝试之后,我得到了一个ConnectionException;应为,因为没有要连接的内容。然而,在那之后,我开始得到SocketException:socketclosed,这对我来说没有意义,因为clientSocket.isClosed()在调用connect()之前和之后总是返回false 如何更改代码以获得所需的功能?即使连接尝试失败,也无法重新连接套接字。您必须关闭它并创建一个新的。即使连接尝试失败,
ConnectionException
;应为,因为没有要连接的内容。然而,在那之后,我开始得到SocketException:socketclosed
,这对我来说没有意义,因为clientSocket.isClosed()
在调用connect()
之前和之后总是返回false
如何更改代码以获得所需的功能?即使连接尝试失败,也无法重新连接
套接字。您必须关闭它并创建一个新的。即使连接尝试失败,也无法重新连接套接字。您必须关闭它并创建一个新的。将您的新套接字
移动到重试循环中。不要重复使用损坏的实例。哦,我的天哪,非常感谢你。我已经为这个扯了很久的头发了。只是证明了解决方案的简单性与它的令人沮丧程度成反比。将您的新套接字
移动到重试循环中。不要重复使用损坏的实例。哦,我的天哪,非常感谢你。我已经为这个扯了很久的头发了。只是证明了一个解决方案的简单程度与它的令人沮丧程度成反比。
clientSocket = new Socket();
while (!clientSocket.isConnected()) {
try {
clientSocket.connect(new InetSocketAddress(serverAddress, serverPort));
} catch (IOException e) {
e.printStackTrace();
}
// sleep prevents a billion SocketExceptions from being printed,
// and hopefully stops the server from thinking it's getting DOS'd
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}