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

2025-05-29 0 66

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

1:connection timed out

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

?

1

2

3

4

5

6

7

8

9

10

11
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

总结

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

原文链接:https://blog.csdn.net/weixin_40581455/article/details/84674106

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java中Connection timed out和Connection refused的区别讲解 https://www.kuaiidc.com/109435.html

相关文章

发表评论
暂无评论