客户端中的NoRouteToHostException

我正在开发一个涉及服务器和客户端的程序,我尝试监听端口,然后从客户端向该端口发送消息。 但是,这样做我得到NoRouteToHostException 。 我做了一个简单的客户端和服务器应用程序来测试我是否可以发送和接收给定服务器和客户端的消息。

服务器:

 public class Server{ public static void main(String [] args) throws Exception{ ServerSocket s = new ServerSocket(8001); s.accept(); } } 

客户:

 public class Client{ public static void main(String [] args){ Socket s = new Socket(IP, port); PrintWriter p = new PrintWriter(s.getOutputStream(), true); p.println("Hello World"); s.close(); } } Exception in thread "main" java.net.NoRouteToHostException: No route to host at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 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) 

我试图ping服务器,它也经历了。 此外,如果我在localhost上运行客户端,我不会得到exception。 当客户端在不同的系统上运行时,我只得到exception。

编辑在8080上运行服务器时,它可以工作。 我尝试通过iptables --policy INPUT ACCEPT允许所有到服务器的传入连接,但是仍然不允许我在端口8001上侦听

这种情况只有在端口由于其间的防火墙而无法访问时才会发生。 此防火墙甚至可以在客户端或服务器计算机上的任何位置。
ping是检查主机是否可访问,但是不在端口8001上。从ping ,确认主机是可访问的。

尝试在另一个通常打开的端口上运行服务器程序,例如80,443,8080等。网络/防火墙管理员通常允许这些端口打开并可访问。 请注意,对于端口80,443(任何小于1024的端口),需要root访问权限才能绑定到它(在服务器上)。