gpt4 book ai didi

Java客户端socket返回连接超时异常

转载 作者:行者123 更新时间:2023-11-30 11:05:39 26 4
gpt4 key购买 nike

我开始学习 JAVA 网络编程。我写了一个服务器类,它使用 ServerSocket 来监听端口 3333。下面是代码片段。

try {
servSock = new ServerSocket(portNumber);
//servSock.setSoTimeout(100000);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Socket link = null; //Step 2.

while(true){
try {
link = servSock.accept();

这工作正常,因为 accept 调用正确地阻止了程序。

但是当我通过客户端从同一台机器连接到同一个端口时,使用下面的代码

Socket link = new Socket();
link.connect(new InetSocketAddress(InetAddress.getLocalHost(),3333), 50000);

它会在一段时间后抛出 ConnectionTimedout。

我无法连接到服务器!。请帮助某人。

最佳答案

尝试将 InetAddress.getLocalHost() 替换为 localhost

原因是 InetAddress.getLocalHost() 实际上返回机器的主机名,以及与该主机名关联的 IP 地址。

如前所述here :

InetAddress.getLocalHost() doesn't do what most people think that it does. It actually returns the hostname of the machine, and the IP address associated with that hostname. This may be the address used to connect to the outside world. It may not. It just depends on how you have your system configured.

提到了 InetAddress.getLocalHost() 的 javadoc here .

希望这对您有所帮助。

关于Java客户端socket返回连接超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com