2

我有一个 Java servlet 尝试连接到源(使用请求 ip 地址)。

方法如下:

String ip = request.getRemoteAddr();

private void connect(String ip) throws SocketException, IOException {
        Socket socket = new Socket();
        socket.setSoTimeout(1000);
        socket.connect(new InetSocketAddress(ip, Constant.PORT));
    }

现在,如果它在一秒钟内没有连接,它应该抛出异常,但它不会在一秒钟内抛出异常,而是需要一段时间,比如 10-15 秒。

有人可以帮助为什么会这样吗?

4

1 回答 1

6

SO_TIMEOUT(由socket.setSoTimeout设置)仅影响 socket.getInputStream().read()。要指定连接超时,请为 socket.connect 指定第二个参数

socket.connect(new InetSocketAddress(ip, Constant.PORT), 1000);
于 2013-06-03T12:57:07.370 回答