0

基本的なチャット機能 (メッセージの送受信が可能) を備えた Java アプレットを作成しています。クライアントバージョンで接続を処理するために別のスレッドを作成しました。サーバーも、接続されたすべてのクライアントに対してスレッドを作成します。

クライアントの run() メソッドには、受信したメッセージを読み取るための while ループがあります。

while (state == ConnectionState.CONNECTED) {
   out.println("Hello Server");
   out.flush();
   String input = in.readLine();
   System.out.println(input);
   if(input == null){
      connectionClosedFromOtherSide();
   }
   else {
      received(input);
      System.out.println(String.format("Recieved something: %s", input));
   }
}

ここに私の PrintWriter と私の BufferedReader があります。デバッグの目的で、「hello サーバー」をここに置きます。このコードは問題なく動作しますが、問題は sendtext() メソッドです。

synchronized private void sendText(String tosend) {
   if(out != null && state == ConnectionState.CONNECTED){
      out.print(tosend);
      out.flush();
      System.out.println(String.format("sending %s to server", tosend));
   }
}

なぜか、このメソッドを呼び出してもサーバー側で受信されません。(ただし、コンソールには送信済みと表示されます)

誰でもこれで私を助けてもらえますか?

4

1 に答える 1

2

クライアント側、それぞれ

String input = in.readLine(); // read until newline

サーバー側では、

out.println( tosend ); // print the newline expected by the client

out.flush()改行を送信しないでください。

于 2012-10-24T21:18:20.027 に答える