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

总结

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

相关文章

  • 解决SpringBoot 测试类无法自动注入@Autowired的问题

    解决SpringBoot 测试类无法自动注入@Autowired的问题

    这篇文章主要介绍了解决SpringBoot 测试类无法自动注入@Autowired的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 解决spring boot环境切换失效的问题

    解决spring boot环境切换失效的问题

    这篇文章主要介绍了解决spring boot环境切换失效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java使用 Stream 流和 Lambda 组装复杂父子树形结构

    Java使用 Stream 流和 Lambda 组装复杂父子树形结构

    在最近的开发中,遇到了两个类似的需求:都是基于 Stream 的父子树形结构操作,返回 List 集合对象给前端,下面给大家分享Java使用 Stream 流和 Lambda 组装复杂父子树形结构的相关操作,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知(实例代码)

    RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知(实例代码)

    这篇文章主要介绍了RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java中将Html转换为PDF的方法和步骤

    Java中将Html转换为PDF的方法和步骤

    这篇文章主要介绍了Java中如何将Html转换为PDF的方法,文中有相关的代码示例和步骤讲解,感兴趣的同学可以参考阅读
    2023-06-06
  • 解决springboot项目不配置数据源启动报错问题

    解决springboot项目不配置数据源启动报错问题

    这篇文章主要介绍了解决springboot项目不配置数据源启动报错问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 深入解析SpringBoot自动配置原理

    深入解析SpringBoot自动配置原理

    这篇文章主要介绍了深入解析SpringBoot自动配置原理,SpringBoot 的一大好处就是:大大简化了 Spring 和其他框架的整合配置,为了简化配置文件使开发者更专注于业务编码,可以使用 SpringBoot 来进行 Web 开发,需要的朋友可以参考下
    2023-11-11
  • SpringMVC使用ResponseEntity实现文件上传下载

    SpringMVC使用ResponseEntity实现文件上传下载

    这篇文章主要为大家介绍了SpringMVC使用ResponseEntity实现文件上传下载,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Java开发编程到底是用idea好还是eclipse好

    Java开发编程到底是用idea好还是eclipse好

    这篇文章主要介绍了Java开发编程到底是用idea好还是eclipse好,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • springboot + mybatis配置多数据源示例

    springboot + mybatis配置多数据源示例

    本篇文章主要介绍了springboot + mybatis配置多数据源示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论