当前位置: 首页 > 知识库问答 >
问题:

ConnectException:连接拒绝超时

越心水
2023-03-14

我看到了很多“java.net.ConnectException:Connection Relection”问题,但没有一个问题提到此错误的超时。我的问题是,我必须连接到一个服务器,在某些情况下,是阻塞的(由另一个软件连接到同一个端口)。所以,我正在做一个循环,用一些最大的重试来尝试连接:

我当前的代码(当然,依赖于我的软件的许多配置,但运行良好):

    public TCPConnector(TCPDefinition tcpDefinition) throws IAException {
    ivTcpDefinition = tcpDefinition;
     // Initialize the socket
    boolean retry = false;
    int counter = 1;
    do {
        try {
            ivSocket = new Socket();
            ivSocket.connect(new InetSocketAddress(tcpDefinition.getHostname(), tcpDefinition.getPort()), tcpDefinition.getConnectTimeOut());
            ivSocket.setSoTimeout(tcpDefinition.getAckTimeOut());
            retry = false;
        }
        catch (UnknownHostException uhe) {
            throw new IAException(null, new StringBuffer("Can't find host: ").append(tcpDefinition.getHostname()).toString(), uhe);
        }
        catch (SocketException see) {
            StringBuilder sb = new StringBuilder("Connection refused to host ").append(tcpDefinition.getHostname()).
            append(" port ").append(tcpDefinition.getPort()).append(". Connection Attempt Nr. ").append(counter);
            logger.error(sb.toString(), see);
            retry = true;
            if (counter++ > tcpDefinition.getConnectRetries())
                throw new IAException(null, sb.toString(), see);
            else
                logger.error("will retry to connect");
        }
        catch (IOException ioe) {
            StringBuilder sb = new StringBuilder("I/O error while connecting to host ").append(tcpDefinition.getHostname()).
            append(" port ").append(tcpDefinition.getPort()).append(". Connection Attempt Nr. ").append(counter);
            logger.error(sb.toString(), ioe);
            retry = true;
            if (counter++ > tcpDefinition.getConnectRetries())
                throw new IAException(null, sb.toString(), ioe);
            else
                logger.error("will retry to connect");
        }
    }
    while (retry);

}
    null

Linux:

2019-12-05 12:45:47,609错误DefaultQuartzScheduler_Worker-1 TCPConnector-连接拒绝承载本地主机端口13002。连接尝试NR.1 java.net.ConnectException:连接被拒绝:在java.net.plainsocketimpl.socketConnect(本机方法)连接

2019-12-05 12:45:47,610错误DefaultQuartzScheduler_Worker-1 TCPConnector-连接拒绝承载本地主机端口13002。连接尝试nr.2 java.net.ConnectException:连接被拒绝:connect

2019-12-05 11:47:07,875错误DefaultQuartzScheduler_Worker-1连接到主机本地主机端口13002时出现I/O错误。连接尝试nr.2 java.net.SocketTimeOutException:在java.net.plainsocketTimpl.SocketConnect(本机方法)连接超时

是否可以配置“拒绝连接”超时?

共有1个答案

富波光
2023-03-14

没有所谓的“连接拒绝超时”。

当服务器看到连接请求,但没有服务侦听请求所指向的IP+端口上的连接时,就会发生“拒绝连接”。然后服务器“拒绝”连接。这通常会立即发生,因此不会触发超时。

“连接超时”(通常)发生在某些东西阻止连接请求到达服务器1,2时。因此客户端将等待服务器的响应,然后重新发送/等待几次。最终,分配给建立连接的时间将过期…连接超时。

1-阻塞可能发生在服务器的应答数据包上。
2-造成这种情况的原因有很多种。最有可能的是防火墙在某处阻塞通信量、网络路由问题或在错误的网络上使用私有IP地址。

 类似资料:
  • 我试图通过Jedis客户端连接到redis服务器,但在连接时我得到了以下异常和堆栈跟踪- redisconnectionFailureException:无法获得Jedis连接;嵌套异常是redis.clients.jedis.exceptions.jedisconnectionException:无法从位于org.springframework.data.redis.connection.jed

  • 我已部署storm server,但每次启动supervisor时都会收到以下错误。 谁能帮我纠正这个错误吗。提前谢谢

  • 我正在使用另一个容器中的DockerizeSpring启动应用程序和redis。 我使用docker comush在同一个网络中运行两个容器,这是我的docker-compose.yml: 这是我的application.yml文件: 我也尝试了redis hots=redis,但结果是一样的。 我的问题是,我得到这个java.net.连接异常:拒绝连接(拒绝连接)”,即使容器在同一个网络中。 我

  • 我正在尝试使用spring ldap 1.3.1连接到windows server 2008上的ldap active directory。发布和ldap配置如下所示: ldap url是:ldap://dc.fabrikam.com 用户名:管理员 密码:123456 -Springldap配置如下: > LDAPContactDAO: -在异常之前调试: 尝试使用getAllContactNa

  • 我使用的是Postgres 9.1.5。JDBC在第一个实例中运行良好,但当我再次尝试时,它开始拒绝连接。例如,我使用JDBC登录到我的web应用程序,效果很好。但是,我尝试使用连接获取其他数据,它引发了一个异常:连接被拒绝。我确信我的代码没有问题,因为上次运行良好的登录JDBC也引发了一个异常:连接被拒绝。 重新启动postgres windows服务后,它再次工作。然后,登录JDBC,获取一些

  • 我试图实现一个TCP连接,在服务器端一切正常,但当我运行客户端程序(从客户端计算机)时,我得到以下错误: 服务器代码: 客户端代码: