2

私はネットワークプログラミングに非常に慣れていません。

以下のソースを 1 つのスレッドで実行しています。他のスレッドから、私は閉じていますistream, ostreamand , しかし、コードの下からsocketまだ noが出力されています。IOExceptionこのコードを Android フォンで実行しています。一部の Android スマートフォンでは、動作は適切で印刷IOExceptionされますが、他のスマートフォンでは印刷されません。

実際にどのように機能するかを知りたいですreadInt()。一部のハンドセットで IOException が出力されない場合、何が問題になる可能性がありますか?

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

1 に答える 1

1

readInt() のソースを読んで、実際の動作を確認できます。ストリームの終わりを超えて読み取ろうとすると、常に EOFException が発生するはずです。

別のスレッドからスレッドを閉じている場合。VM は SocketClosedException をトリガーする必要がありますが、Android フォンの一部のメーカーはこの動作を尊重しない可能性があります。

于 2012-10-29T13:52:02.957 に答える