2012-10-29 51 views
2

我對網絡編程非常陌生。readInt()如何在Android中工作?

我在一個線程中運行的風箱源。從另一個線程我將結束istreamostreamsocket,但仍然沒有IOException從下面的代碼打印。我正在Android手機上運行此代碼。在某些Android手機上,行爲是正確的,並在其他打印的手機上打印IOException

我真的想知道readInt()如何工作。有些手機可能會出現問題,它不會打印IOException?

while(true){ 
try { 
int readInt=istream.readInt(); 
} 
catch(IOException e){ 
Log.i("Sample","IOException"); 
} 
} 

回答

1

您可以閱讀readInt()的源代碼來查看它的真實含義。如果您試圖讀取超出流的末尾,則應始終得到EOFException。

如果你關閉從另一個線程的線程。虛擬機應該觸發一個SocketClosedException,但是有可能某些Android手機不遵守這種行爲。

+0

沒有得到任何的異常,在上面貼的來源。可能是什麼原因? – sam

+0

我會檢查是否所有版本的Android手機都保證在流異步關閉時觸發IOException。我懷疑他們不是。 –

+0

感謝您的回答,找到了解決方案在bellow鏈接。 http://code.google.com/p/android/issues/detail?id=7933 – sam