![通过 Java 客户端代码获取服务器的 UnknownHostException](https://linux22.com/image/493194/%E9%80%9A%E8%BF%87%20Java%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BB%A3%E7%A0%81%E8%8E%B7%E5%8F%96%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%20UnknownHostException.png)
我无法通过 Java 代码连接到已知远程服务器;尝试连接时出现 java.net.NoRouteToHostException:没有路由到主机异常。
但奇怪的是,我能够通过 ssh 连接到同一台服务器。
细节: 简单的 Java 客户端尝试与 Java 独立服务器建立连接时,连接时在以下语句处发生异常:
Socket socket = new Socket(ServerIP ServerPort);
服务器上需要打开端口,以便外部请求可以进入。
以下再次返回 false
InetAddress.getByName(SERVER_IP).isReachable(1000)
服务器在 Fedora、Java 5 上运行。
供参考:Java 无法解析 AIX 的 DNS 地址:UnknownHostException和我的问题几乎一样,但不知何故这既与 AIX 也与 DNS 无关;而且我觉得这个问题更多的是网络或防火墙问题。
请指导我。
答案1
这是主机被防火墙保护时会出现的错误。您能通过 telnet 连接到该 IP 上的同一端口吗?
答案2
构造函数应仅在为时
Socket
尝试解析,然后尝试解析本地主机。您的文件设置正确吗?hostName
null
/etc/hosts
以下代码返回什么?(请使用主机名,而不是 ip )。
System.out.println(InetAddress.getByName(hostName));