gpt4 book ai didi

java - 客户端中的 NoRouteToHostException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:03 25 4
gpt4 key购买 nike

我正在开发一个涉及服务器和客户端的程序,我尝试监听一个端口,然后从客户端向该端口发送消息。但是,这样做时我得到了 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 上监听

最佳答案

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

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

关于java - 客户端中的 NoRouteToHostException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27221290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com