套接字连接未超时



当客户端尝试连接到服务器时,我正在尝试设置超时,如果服务器关闭,连接将等待10秒,然后抛出超时异常。在我的情况下,下面的代码在没有等待的情况下抛出IOException,我真的不明白!

public boolean establishConnection()
{
    System.out.println ("Connecting to " +
            this.getServerHostname() + " au port " + this.getServerPort()+ " ...");
    try {
        SocketAddress sockaddr= new InetSocketAddress(_serverHostname, _serverPort);
        _echoSocket = new Socket();
        _echoSocket.connect(sockaddr,10000);
        return _echoSocket.isConnected();

    } catch (UnknownHostException e) {
        System.err.println("Unknown Host: " + this.getServerHostname());
        return false;
    } catch (SocketTimeoutException e) {
        System.err.println("Timeout");
        return false;
    } catch (IOException e) {
        System.err.println("IOException  : " + 
                this.getServerHostname() + ":" + this.getServerPort());
        return false;
    }
}

只有当您的连接请求没有得到响应时,您才会得到超时。如果服务器立即拒绝它,或者如果服务器不存在,您将立即得到一个异常。

但这是您想要实现的吗
如果你的意图是,以防服务器暂时关闭,然后在10秒后重试,那么你的方法是错误的
您应该尝试连接到服务器,如果因为服务器关闭而出现异常,则可以sleep 10秒,然后重试请求
否则Ernest的答案是正确的

相关内容

  • 没有找到相关文章

最新更新