Java套接字超时不适用

标签 java sockets timeout

我在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: 连接被拒绝。如果错误发生得较早,则不必等待超时。超时实际上是针对完全没有响应的情况。发生错误后等待没有任何意义。

关于Java套接字超时不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27348698/

相关文章:

c# - 如何使用 Session.Query 设置 Nhibernate LINQ 命令超时

PHP cURL 超时被忽略?

java - 图像 + 视频混合在 RecyclerView 中

java - GWT ClientBundle (ImageBundle) 中的用户 svg 图片

java - 如何在数字集之间制作 Java Rand() 输出

c++ - 通过套接字接收 GET 请求

java - SSLSockets 和密码规范问题

java - 玩java mysql应用程序在长时间空闲时间后断开连接(可能是8小时后)

java - InputStream的read()方法是如何实现的?

javascript - AngularJS 中的 API 调用是连续的