这篇文章给大家介绍Java中Connection timed out与Connection refused有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
我们提供的服务有:网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、海州ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的海州网站制作公司
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.(Socket.java:434) at java.net.Socket. (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中Connection timed out与Connection refused有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。