-3

私は最近、ソケットプロジェクトに参加しています。コードをデバッグしているときに問題が見つかりましたが、その理由がわかりません。以下は私のコードです

 // some code that open a socket connection and put inputstream into a BufferedReader called 'in'

 String input;
 input= (String)in.readLine();
do{

    System.out.println(input);

}while(input!=null);

out.close();
in.close();
Socket.close();

ご覧のとおり、上記のコードは無限ループを作成します。サーバー側から文字列を送信すると、その文字列の println が保持されます。

以下のようにすれば

 String input;

do{
    input= (String)in.readLine();
    System.out.println(input);

}while(input!=null);

out.close();
in.close();
Socket.close();

問題は解決し、うまく機能します。サーバーサイトから文字列を送信するたびに、一度だけ印刷されます。しかし、ループを終了せず、次の行に進んでソケット接続を閉じませんでした。

だからここに私の質問があります。do while ループの中に入れると。ループを終了して次の行に移動し、接続を切断する必要がありますか?? do while ループが 1 回だけ実行され、次の行に進まなかった理由を誰か説明できますか?

一番

4

1 に答える 1

1

input= (String)in.readLine();が do-while ループ内にある場合、 を読み込むと、null出力されてnullからループを終了します。次に、out.close();in.close();Socket.close();が実行されます。

于 2013-05-21T21:58:41.193 に答える