【问题标题】:How does readInt() work in Android?readInt() 如何在 Android 中工作?
【发布时间】:2012-10-29 13:46:46
【问题描述】:

我对网络编程很陌生。

我在一个线程中运行以下源代码。从其他线程我正在关闭istreamostreamsocket,但仍然没有从下面的代码打印IOException。我在 Android 手机上运行此代码。在某些 Android 手机上,该行为是正确的并打印 IOException,而在其他手机上则不打印。

我真的很想知道readInt() 是如何工作的。某些手机​​没有打印 IOException 可能是什么问题?

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

【问题讨论】:

    标签: java android stream android-networking


    【解决方案1】:

    您可以阅读 readInt() 的源代码以了解它的实际作用。如果您尝试读取超出流末尾的内容,则应该始终收到 EOFException。

    如果您从另一个线程关闭线程。 VM 应该触发 SocketClosedException,但可能某些品牌的 Android 手机不支持这种行为。

    【讨论】:

    • 在上面发布的源代码中没有得到任何异常。可能是什么原因?
    • 我会检查是否所有版本的Android手机都保证在异步关闭流时触发IOException。我怀疑他们不是。
    • 感谢您的回答,在下面的链接中找到了解决方案。 code.google.com/p/android/issues/detail?id=7933
    • 它说它已于 2010 年 8 月关闭,但不清楚这是否仅影响 a) 旧版 Android 或 b) 某些可能相对较新的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多