2013-04-06 21 views
0

我在一段代碼中遇到了這個異常,我在調用readFully時發生了這種情況。我不明白它是如何發生的,因爲readFully應該阻塞直到len字節可用。如果它知道有很多字節可用,那麼它怎麼能稍後遇到一個EOF?readFully(byte [] b,int off,int len)和EOFException

我該如何解決這個問題? (我正在讀取前3個字節以獲取長度(TLV的TL部分),然後在讀取V時偶爾遇到問題)。

感謝

回答

1

The documentation說:

拋出:EOFException - 如果此輸入流達到讀取所有字節之前結束。

因此,如果發送的長度不正確(即大於實際長度),或者發送方在寫入所有字節之前關閉流,則會出現此行爲。

+0

因此,如果另一端的人告訴我期望再多50個字節,但實際上只發送20個字節,那麼我得到這個錯誤?我可以使用EOFException儘可能讀取嗎? – Richard 2013-04-06 16:23:30

+0

你明白了。這是發送端的一個錯誤,應該修復。例如,如果此錯誤未修復或再次出現,則應通過顯示錯誤消息來處理異常。我不會嘗試像接收與消息開始部分指定的字節數不同的字節數是正常的那樣。 – 2013-04-06 16:26:24

相關問題