【问题标题】:Continuously connecting to a server via a Socket until a connection is established通过 Socket 持续连接到服务器,直到建立连接
【发布时间】:2018-04-25 02:58:52
【问题描述】:

我有一个客户端,我想尝试持续连接到服务器,直到建立连接(即,直到我启动服务器)。

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

第一次尝试后,我得到了ConnectionException;预期的,因为没有什么可以连接的。然而,在那之后,我开始收到SocketException: Socket closed,这对我来说没有意义,因为clientSocket.isClosed()connect() 调用之前和之后总是返回false。

我应该如何更改我的代码以获得我需要的功能?

【问题讨论】:

  • 将您的new Socket 移动到重试循环中。不要重复使用损坏的实例。
  • 天哪,非常感谢。我已经为此拉头发太久了。只是证明解决方案的简单性与令人沮丧的程度成反比。

标签: java sockets


【解决方案1】:

即使连接尝试失败,您也无法重新连接 Socket。您必须关闭它并创建一个新的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2015-05-09
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多