Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过套接字连续连接到服务器,直到建立连接_Java_Sockets - Fatal编程技术网

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