2011-10-17 26 views
0

我正在從Amazon S3服務器下載長文件。如果發生任何情況,我會將excpetions記錄到我的服務器數據庫中。我看到的是大量的例外是java.net.SocketTimeoutException:讀超時如何在從服務器讀取數據時處理ReadTimOut異常?

我想這是當用戶在惡劣/較差互聯網覆蓋率發生,但我不知道如果用戶是在惡劣的覆蓋區域,那麼爲什麼那是登錄服務器?(因爲這也通過互聯網完成)。任何身體知道原因?

在此發生異常每次該生產線是

而((numRead = inputStream.read(mBuffer))> = 0)

中怎樣處理該異常?我認爲,當發生異常時,我應該再次嘗試一下,例如5次的時間,通過呼叫

inputStream.read(mBuffer);

我想的是對的嗎?

是否在讀取超時異常後輸入流將有效再次使用?

將調用inputStream.read(mBuffer);將從最後一次流出來恢復?

由於

回答

1

輸入流仍然有效,並且緩衝在超時後不包含數據。如果你得到很多超時,我會開始增加超時時間。加倍吧。首先應該至少30-60秒,因爲你需要所有的數據。

+0

謝謝你的時間。你能告訴我1件事嗎? 如果發生異常再次調用inputStream.read(mBuffer);將從最後一次流出來恢復? – Arslan 2011-10-18 05:53:36

+0

@Arsian我已經回答了。 '緩衝區在超時後不包含數據。'想想看。發生超時而不是將任何數據傳輸到緩衝區。所以沒有任何數據,這就是爲什麼它正在閱讀,所以沒有什麼可以丟失的。 – EJP 2011-10-18 06:23:18

+0

哦,是的,我以同樣的方式思考。謝謝 – Arslan 2011-10-18 06:42:22

相關問題