尝试套接字连接时出现Java异常

时间:2012-08-31 15:43:59

标签: java sockets

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

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

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)

2 个答案:

答案 0 :(得分:7)

API中所述:

  

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

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

答案 1 :(得分:2)

'无主机路由'表示您的主机甚至不知道如何联系目标。这是一个网络连接问题。不是防火墙问题。