我尝试使用java套接字做一个非常基本的echo服务器,它在本地运行完美(在同一台计算机上同时运行服务器和客户端),当我尝试从另一台计算机运行客户端时,我得到了例外:
Couldn't get I/O for the connection to XXX.XXX.XX.X
XXX.XXX.XX.X是运行服务器的计算机的IP
btw:服务器和客户端的代码大致是oracle初学者教程的代码: server client
编辑: 我得到的完整堆栈跟踪:
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(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 sockets.Client.main(Client.java:16)
答案 0 :(得分:0)
正如评论中所提到的,这两台用过的计算机都挂在了两个不同的wifi供应商身上。 answer to a similar question提到可能的其他原因。
答案 1 :(得分:0)
我得到了例外
Couldn't get I/O for the connection to XXX.XXX.XXX.XXX
不 例外。这是一个设计糟糕的错误消息,隐藏异常。当您收到例外情况时,请不要显示/打印/记录您自己设计的无意义错误消息。显示/打印/记录异常本身,和其消息,和其类,和其堆栈跟踪。< / p>
编辑:我得到的完整堆栈跟踪:
java.net.ConnectException: Connection timed out: connect
完全。这是真正的例外,它几乎肯定意味着防火墙阻止您进行所需的连接。