クライアントとサーバーの間で情報を連続的に共有しようとしていますが、サーバーが読み取り中に停止することがあります。readUTF()関数でサーバーがブロックされました
まず、クライアントが自分自身についてのいくつかの情報(IDとstrの文字列変数)を送信
クライアント
out.writeUTF(id+" "+str);
out.flush();
System.out.println("Do you want a room ?");
System.out.println("These are the available room");
String a4;
while((a4=in.readUTF()) != null)
System.out.println(a4);
System.out.println("Pick one"); // It doesn't print that
sc4 = new Scanner(System.in);
String str4 = sc4.next();
out.writeUTF(str4);
out.flush();
サーバー
out.writeUTF(Room.getAllRooms());
out.flush();
System.out.println("Before read");
String res = in.readUTF(); // stuck here
System.out.println("After read");
.
.
.
すべての客室作品の印刷クライアントで素晴らしい。しかし、すぐに私は印刷することができません "1つを選ぶ"。
サーバーは何も読み取っていませんが、サーバーが最初に読み取り中で、クライアントが最初に書き込みを行わないのはなぜですか?
(私は実際に私がスレッドを使用して、マスター/スレーブ・アーキテクチャを使用している、コードを簡素化)
更新:問題が解決し、応答怒鳴るをお読みください。
あなたはあなたの 'while '状態であまりにも多くをやろうとしているようです。 2つの部分に分割して、ストリングではなくストリームを確認してください。 – rossum