[英]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.