更新:私はばかです。サーバーにはout.println((String) null);
、クライアントがいつ停止して切断するかを知るために使用する行があります。その行は不要であり、おそらく「null」がどこから来たのかがわかりました (tat がどのように文字列に変わったのかはわかりませんが...) しかし、ご協力いただきありがとうございます!
サーバーがnullを送信するとすぐにクライアントが終了するクライアントサーバープログラムを作成しています。問題のループは次のとおりです。
while ((message = in.readLine()) != null) {
System.out.println("C: Recieved " + message + " from server");
}
出力は次のとおりです。
C: Recieved Hi from server
C: Recieved null from server
サーバーnull
は、hi を送信した後、クライアントを呼び出す前に、クライアントにa を送信close()
します。これについてはおそらく前に言及する必要がありましたが、java.net でクラス Socket および ServerSocket を使用しています。しかし、while ループが 2 回実行され、メッセージが の場合でも入力されるのはnull
なぜですか?
編集: サーバーが null を送信する行はout.println((String) null);
. それは文字列「null」に変換されますか?