客户端或服务器上的NoRouteToHostException?

时间:2013-03-28 15:54:39

标签: java networking routing

我正在

Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:564)
at sun.reflect.GeneratedMethodAccessor638.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:130)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)

javadoc

  

表示尝试连接套接字时发生错误   远程地址和端口。通常,远程主机不能   因为介入防火墙或中间人而达到了   路由器坏了。

这是客户端或远程端的错误,还是它们中的任何一个?

6 个答案:

答案 0 :(得分:7)

要么。它可能是客户端计算机上阻止拨出呼叫的防火墙或另一端的某个地方。

答案 1 :(得分:7)

基本上它说客户端无法连接到服务器,因为客户端计算机无法访问该地址。

请检查您要连接的地址是否可通过命令提示符(Windows)或终端(基于Unix)中的 ping 命令访问:

ping <address>

或者如果是网络服务器,您可以尝试在网络浏览器中查看它 在大多数情况下,ping命令对我很有帮助,因为我知道为什么我无法连接到该地址。它可能是一个错误的地址,或者像javadoc建议的那样,防火墙问题。

答案 2 :(得分:0)

我遇到了同样的问题,并通过在两侧禁用防火墙来解决此问题:

systemctl禁用firewalld

服务防火墙停止

答案 3 :(得分:0)

ping可能会提供响应,但是应用程序仍可能无法连接。 如果是这种情况,我建议使用telnet尝试使用所需的端口telnet host.address port

连接到主机

如果拒绝连接,则需要允许主机上的端口。它成功了,但是应用程序仍然无法连接:

  1. 验证您的应用程序中使用的地址:端口是否与telnet测试中使用的端口相同。
  2. 可能是客户端上的本地端口阻塞了连接,在这种情况下,您需要允许客户端上的端口

答案 4 :(得分:-1)

我遇到了同样的问题,我确实在主机服务器上运行了iptables flush,这解决了该问题。

# iptables --flush 

答案 5 :(得分:-1)

就我而言,它是这样解决的:

1 - 使用“yarn cache clean”或“npm cache clean --force”清除缓存

2 - 之后重启电脑。

如果清除缓存但不重新启动,数据仍将存储在网络上的“某处”,因此端口不会连接,它仍然很忙。 重启后连接顺利。

希望对你有帮助!