客户端或服务器上的NoRouteToHostException?

pad*_*dis 10 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)
Run Code Online (Sandbox Code Playgroud)

贾瓦多克

表示尝试将套接字连接到远程地址和端口时发生错误.通常,由于中间防火墙或中间路由器关闭,无法访问远程主机.

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

jus*_*alf 8

基本上它表示您的客户端无法连接到服务器,因为客户端计算机无法访问该地址.

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

ping <address>
Run Code Online (Sandbox Code Playgroud)

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


Qwe*_*rky 6

无论是.它可能是客户端计算机上阻止传出呼叫的防火墙或另一端的某个地方.

  • 这个答案是如何被接受的,只是在没有指出真正问题的情况下进行疯狂的猜测 (11认同)

Pau*_*ner 6

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

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

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