2

我正在尝试与 ip:port 建立套接字连接,并且它在我的一台计算机上都能正常工作。客户端首先通过socket连接连接到服务器进行登录;之后,它期望来自服务器的传入连接并且它们是成功的。

但是,当我在另一台计算机上尝试时,客户端建立了第一个连接以成功登录,然后等待传入连接。在将启动连接的服务器端,我收到以下消息:

java.net.NoRouteToHostException

并且传入连接失败。

为什么会这样?会不会是防火墙问题?

s = new Socket(id, 4446);
BufferedWriter out1 = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader in1 = new BufferedReader(new InputStreamReader(s.getInputStream()));

那是第 46 行

java.net.NoRouteToHostException: No route to host: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at sample_server.doComms.run(doComms.java:46)
        at java.lang.Thread.run(Unknown Source)
4

2 回答 2

7

API中所述:

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

您很可能有防火墙或阻止连接的东西。如果您有一个真正快速的,请尝试禁用一个,看看它是如何工作的。如果它不起作用,那就是别的东西(完整的堆栈跟踪可能会有所帮助,正如您对问题的评论所说)。

于 2012-08-31T15:46:36.087 回答
2

“没有到主机的路由”意味着您的主机甚至不知道如何联系目标。这是网络连接问题。不是防火墙问题。

于 2012-09-01T01:19:56.093 回答