-2

Java プラットフォームを使用した C++ サーバーの開発。ちょっとした問題でスタックします。誰もがここで助けてくれることを願っています

C++ サーバー コード フラグメント

// Sample send a socket
sned(ConnectedSocket, classroomlist, strlen(classromlist), 0);

Java クライアントで

// Catch the socket
InputStreamReader isr = new InputStreamReader(socket.getInputStream());

char[] buffer = new char[3];

そしてここで問題が発生

  1. BufferedReader を使用すると、何も読み出されません。

  2. そして、私は使用しようとします

    while((x = inr.read(バッファ)) != -1){}

、読み取り中に while ループにスタックします。( BufferedReader の出力がない理由を発見してください)

  1. そしてwhile(true){ SYstem.out.println(inr.read(buffer)) } 、各回の読書のすべての長さを印刷しようとします。問題発見!このような出力 vvvvvvvvvvv

    05-31 11:35:09.934: D/@@@(3264): 3 05-31 11:35:09.934: D/@@@(3264): 3 05-31 11:35:09.934: D/@ @@(3264): 3 05-31 11:35:09.934: D/@@@(3264): 2

InputStremaReader.read()tcpreturn -1パッケージが最後に到達したとします。しかし、関数は終了前にスタックし、待って待って待っていますgggggg。

4

1 に答える 1

1

送信者がソケットを閉じない場合、受信者はストリームの終わりの状態を取得しません。

逆に、受信者がストリームの終わりの状態を取得しない場合は、送信者がソケットを閉じないという結論に達する必要があります。

于 2013-05-31T11:06:53.567 に答える