Java中Connection timed out和Connection refused的区别讲解

 更新时间:2019年04月10日 09:38:58   作者:Kikityer  
今天小编就为大家分享一篇关于Java中Connection timed out和Connection refused的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

前言:这两个异常报出的时候,说明客户端没法正常连接到服务端,但是两者还是有区别的。

1:Connection timed out

在实际开发中经常会碰到Connection timed out的问题

java.net.ConnectException: Connection timed out (Connection timed out)
  at java.net.PlainSocketImpl.socketConnect(Native Method)
  at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  at java.net.Socket.connect(Socket.java:589)
  at java.net.Socket.connect(Socket.java:538)
  at java.net.Socket.<init>(Socket.java:434)
  at java.net.Socket.<init>(Socket.java:211)
  at ClientSocketTimeout.main(ClientSocketTimeout.java:8)

当得到 Connection timed out: connect 的时候表示TCP路由不正常,原因有很多,可能是服务器无法ping通,可能是服务器(防火墙等)丢弃了该请求报文包,也可能是服务器应答太慢,又或者存在间歇性的问题(这种情况很难从日志文件中排查问题)。

2:Connection refused

当得到Connection refused: connect 异常的时候表示从本地客户端到目标IP地址的路由是正常的,但是该目标端口没有进程在监听,然后服务端拒绝掉了连接。

一个成功的tcp链接将会看到Syn,Syn-Ack,Ack,这也就是我们预期的TCP三次握手。当使用tcpdump或wireshark抓包工具来探测发送过来的请求报文包时,Connection refused将会看到Syn,Rst。

Connection refused问题排查

1. 查看防火墙是否打开,如防火墙打开,端口是否开放

2. 查看服务端是否正常运行

3. 查看服务端监听的端口与客户端访问的端口是否一致

jps | grep [appname]

netstat -anp | grep [pid]

4. ping hostname, telnet hostname port

5. 检查客户端访问的hostname和port是否正确

6.  检测服务端监听端口是host是否使用了127.0.0.1/localhost

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Java正则匹配中文的方法实例分析

    Java正则匹配中文的方法实例分析

    这篇文章主要介绍了Java正则匹配中文的方法,结合实例形式分析了Java针对中文、标点及引号等匹配操作相关技巧,需要的朋友可以参考下
    2017-03-03
  • Scala之文件读取、写入、控制台操作的方法示例

    Scala之文件读取、写入、控制台操作的方法示例

    这篇文章主要介绍了Scala之文件读取、写入、控制台操作的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Java 构造方法的使用详解

    Java 构造方法的使用详解

    构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法
    2021-11-11
  • Java你不了解的大数型BigInteger与BigDecimal类

    Java你不了解的大数型BigInteger与BigDecimal类

    这篇文章主要介绍了Java 处理超大数类型之BigInteger与BigDecimal案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2022-05-05
  • SpringBoot中的@CrossOrigin注解详解

    SpringBoot中的@CrossOrigin注解详解

    这篇文章主要介绍了SpringBoot中的@CrossOrigin注解详解,跨源资源共享(CORS)是由大多数浏览器实现的W3C规范,允许您灵活地指定什么样的跨域请求被授权,而不是使用一些不太安全和不太强大的策略,需要的朋友可以参考下
    2023-11-11
  • Java构造函数的相互调用代码示例

    Java构造函数的相互调用代码示例

    这篇文章主要介绍了Java构造函数的相互调用代码示例,分享了两段代码示例,通过this关键字实现对的构造函数的调用,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • SpringFactoriesLoader类作用详解

    SpringFactoriesLoader类作用详解

    SpringFactoriesLoader可以加载jar包下META-INF下的spring.factories,把相关接口的实现按照key,value的形式加载到内存,一个接口的多个实现可以按照","进行分割
    2022-10-10
  • java中断机制实例讲解

    java中断机制实例讲解

    这篇文章主要介绍了java中断机制实例讲解,用了风趣幽默的讲法,有对这方面不太懂的同学可以研究下
    2021-01-01
  • JAVA中List.addAll的基本语法与用法详解

    JAVA中List.addAll的基本语法与用法详解

    这篇文章主要给大家介绍了关于JAVA中List.addAll的基本语法与用法的相关资料,需要的朋友可以参考下
    2024-06-06
  • 高吞吐、线程安全的LRU缓存详解

    高吞吐、线程安全的LRU缓存详解

    这篇文章主要介绍了高吞吐、线程安全的LRU缓存详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02

最新评论