繁体   English   中英

Java套接字超时不适用

[英]Java socket timeout does not apply

我在使用超时的java中有此套接字实现:

        try {
            socket = new Socket();
            socket.connect(new InetSocketAddress(ip, port), 5000);

        } catch (SocketException e2) {
            System.out.println("Something wrong with the socket: " + e2);
        }

IP和端口已关闭,因此无法建立连接。 但是这里的超时不起作用。 它不会等待5秒钟,然后返回错误。

此代码位于构造函数中,并从可运行类调用。 这可能是原因吗?

连接超时是connect()将阻止的长时间。 如果立即拒绝连接或发生其他错误,您将立即得到它。 在这种情况下,目标端口未在侦听,因此您将立即获得ConnectException: connection refused 如果错误发生得较早,则不必等待超时。 超时实际上是完全没有响应的地方。 错误等待没有任何意义。

套接字套接字=新的Socket();

//这限制了建立连接的时间

//如果在指定的超时时间内未收到连接结果,则会发生超时。

socket.connect(新的InetSocketAddress(主机,端口),超时);

//这会在连接成功后停止等待响应的请求。

socket.setSoTimeout(timeout);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM