Java中连接超时与连接拒绝有什么区别

  介绍

这篇文章给大家介绍Java中连接超时与连接拒绝有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> 1:连接超时

在实际开发中经常会碰到连接超时<代码> 的问题

java.net.ConnectException:, Connection  timed  out  (Connection  timed )   at 才能java.net.PlainSocketImpl.socketConnect (Native 方法)   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)

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

<强> 2:连接拒绝

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

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

<强>连接拒绝问题排查

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

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

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

jps | grep(浏览器名称)

netstat anp | grep (pid)

4。ping主机名、telnet端口主机名

5。检查客户端访问的主机名和端口是否正确

6只;检测服务端监听端口是主机是否使用了127.0.0.1/localhost

关于Java中连接超时与连接拒绝有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

Java中连接超时与连接拒绝有什么区别