簡體   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