0

Javaでクライアントプログラムを書いています。サーバーは C++ で書かれています。クライアントからサーバーにメッセージを送信しているときは問題ありません。しかし、受信中にクライアントスレッドがこの呼び出しでスタックします

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

接続を切断すると、受信したすべてのデータが印刷されます。このシナリオから私が得ているのは、cのようにヌル文字であるように、getInputStream()が終了文字を取得していないことです(これはどうあるべきかわかりません)。この問題から回復するには、サーバー側でメッセージの最後に何を追加すればよいか教えてください。

4

1 に答える 1

7

以下を使用する必要があります。

in = new InputStreamReader(socket.getInputStream());

それ以外の:

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedReader一般に、非ネットワーク IO (ファイル IO など) および行が改行文字で終了するプレーン テキストで使用するために用意されています。あなたがネットワークとバイナリデータを扱っているなら(そしてあなたがそうしているようです)、プレーンなものを使うべきですInputStreamReaderDataInputStream

于 2013-07-11T19:50:43.510 に答える