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

时间:2015-04-11 08:19:30

标签: java sockets

我开始使用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。

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

1 个答案:

答案 0 :(得分:1)

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

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

如上所述here

  

InetAddress.getLocalHost()并没有做大多数人认为的事情。它实际上返回了机器的主机名,以及与该主机名关联的IP地址。这可能是用于连接外部世界的地址。它可能不会。这取决于您如何配置系统。

提到了InetAddress.getLocalHost()的javadoc here

希望这有帮助。