我正在尝试使用java套接字做一个非常基本的回显服务器,它在本地运行得很好(在同一台计算机上运行服务器和客户端),当我尝试从另一台计算机运行客户端时,我得到了异常:
Couldn't get I/O for the connection to XXX.XXX.XX.X
XXX.XXX.XX.X 是运行服务器的计算机的 IP
顺便说一句:我的服务器和客户端代码大致是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)
最佳答案
I get the exception
Couldn't get I/O for the connection to XXX.XXX.XXX.XXX
这不是异常(exception)。这是一个设计不当的错误消息,隐藏异常。当您遇到异常时,不要显示/打印/记录您自己设计的无意义的错误消息。显示/打印/记录异常本身、及其消息、及其类、及其堆栈跟踪。
EDIT: The full stacktrace I get:
java.net.ConnectException: Connection timed out: connect
正是如此。这是真正的异常,它几乎肯定意味着有防火墙阻止您建立所需的连接。
关于Java 套接字、回显服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33354221/