客户端中的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.<init>(Socket.java:434)
        at java.net.Socket.<init>(Socket.java:211)

我尝试对服务器执行ping操作,它也通过了。另外,如果我在本地主机上运行客户端,也不会出现异常。仅当客户端在其他系统上运行时,我才会获得异常。

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

卡纳111

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章