2011-06-15 10 views
2

かかわらず、サーバーからメッセージを受信するいくつかの問題:最初のクライアントが自分のサーバーのコードでソケット

BufferedReader br = new BufferedReader(new InputStreamReader(
        clientSocket.getInputStream(), "UTF-8")); 
OutputStreamWriter stream = new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"); 
PrintWriter pw = new PrintWriter(stream); 

その後、私のクライアントコードで

pw = new PrintWriter(stream); 
br = new BufferedReader(new InputStreamReader(
    socket.getInputStream(), "UTF-8")); 

、サーバーの使用: pw.println(」 OK"); pw.flush();

クライアントは、その後のサーバーの使用をOK

を受け取る:

pw.println("TRUE") 
pw.flush(); 

この時、クライアントはunknowのchar

\ufffd\ufffdTRUE 

を持っている文字列を受け取り、その後、私はクライアントにMSGを送信し続けると、すべての文章の前に\ ufffdを受け取ります。

問題を解決するのに手伝ってもらえますか?

答えて

0

サーバーがバイトオーダーマーカー(0xFFFE 0xFFFF)を再送し、クライアント側で置換文字(0xFFFD)で置き換えられていることが想像できます。
サーバー側で送信する前にプリントライターを再作成しますか?

+0

お返事ありがとうございます。毎回、私は同じプリントライターを使いました。私は何が起こったのか分かりません。 – Johnny

+0

しかし、サーバーとクライアントが同じマシン上にある場合は、正常に動作します。しかし、今私のサーバーはマシンserver2003をインストールし、クライアントがWindows 7にインストールされている、問題が発生します。 – Johnny

+0

私は、サーバーからデータを読み込むreadlineメソッドを呼び出すたびに、\ r \ nの後ろに\ ufffdを読み込むことがわかります。最初に "OK"を直接与えてくれるでしょう。それは私に "TRUE"の前に\ ufffdを与え、3回目に\ ufffdを与えます。あなたはなにか考えはありますか?異なるjresを介してデータを変換するとこの問題が発生しますか?ごめんなさい。 – Johnny

関連する問題