[英]Java: socket read time out exception
我試圖打電話給一個非常重的過程。 它的平均工作時間估計為9-10分鍾。
當我執行該過程時,我將超時設置為一個非常龐大的數字:99999999。
2分鍾后,我收到以下錯誤:
java.net.SocketTimeoutException:讀取超時
我試圖把它弄得更糟,我把超時設置為3000,並且在預期的3秒后我得到了同樣的錯誤。
您是否知道為什么socket.setSoTimeout(99999999)
將其設置為最大120000?
顯然,您沒有設置您認為正在設置的超時,或者其他人正在更改它。 你必須發布一些代碼才能得到進一步的闡述。
請注意,根據WR Stevens在TCP / IP Illustrated,第二卷,#17.4中的說法,超時保持為1000Hz刻度的短暫,因此超時不能超過11分鍾。 這適用於BSD代碼。
我不確定您的應用程序是如何工作的,但嘗試為套接字設置無限超時
public void setSoTimeout(int timeout) throws SocketException
使用指定的超時啟用/禁用
SO_TIMEOUT
,以毫秒為單位。 如果將此選項設置為非零超時,則與此Socket關聯的InputStream
上的read()
調用將僅阻止這段時間。 如果超時到期,則引發java.net.SocketTimeoutException
,盡管Socket仍然有效。 必須在進入阻止操作之前啟用該選項才能生效。 超時必須> 0
。 超時為零被解釋為無限超時。
如果您提供有關通話的更多信息,我可以改進答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.