1

Javaサーバーに接続するアプリを作成しました。サーバーに小さなメッセージを送信し、サーバーはメッセージが「オン」の場合に応答します。それ以外の場合、サーバーはデータを送り返しません。

入力ストリームがnullかどうかを確認する行を書きましたが、サーバーからの応答がない場合にnullpointer例外が発生します。そして、私にとっては奇妙です:

if (!(行 = in.readLine()).equals(null)) { Remote.setValue(行); }

したがって、「行」がnullの場合、値を設定した部分をスキップする(または他の部分に移動する場合は別の部分に移動する)必要がありますが、ハングします。アプリ全体をブロックするだけです。

私は何を間違えましたか?どうしてこれなの?どうすれば解決できますか?助けてください!

4

1 に答える 1

0

入力ストリームが null かどうかをチェックしていません。readLinenull を返すかどうかを確認しています。

代わりにこれを試してください:

if (in != null) {
  line = in.readLine();
  if (line != null) {
      Remote.setValue(line);
  }
}

編集 :

入力が利用可能になるまで がブロックされないようsocket.setSoTimeout (x)にするために、x が正の整数である場合に使用します。in.readLine()

于 2013-04-30T13:56:40.600 に答える