【发布时间】:2012-08-31 15:43:59
【问题描述】:
我正在尝试与 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)
【问题讨论】:
-
添加代码没有意义,太复杂了,听起来不像是源代码问题,因为它在一个系统上成功
-
可能是网络问题。您可以从第二台主机 ping 服务器,反之亦然吗?
-
显示如何连接套接字的代码(不是整个代码),提供所涉及的任何主机名和/或 IP 地址以及完整的堆栈跟踪。
-
@Evan 所涉及的主机名和 IP 地址将是最有趣和最有用的部分 :)
-
@PhilippReichart 我无法公开该 phil,但我尝试从服务器 ping 并没有得到响应,所以我猜它是防火墙。