1

boost::asio::ip::tcp::iostreamTCPストリームからバイナリデータを読み取るために使用しています。私はこれをそのようにします:

stream.read(reinterpret_cast<char*>(&packetSize), 4); // first 4 bytes is length
stream.read(buffer, packetSize);

確認する必要がありますか?stream.gcount()stream.gcount() == 0は、読み取りに使用できるデータがないことを意味します(TCPセッションが終了しました)?

4

1 に答える 1

0

探しているストリーム メンバーは、基本クラスhttp://en.cppreference.com/w/cpp/io/basic_iosに深く埋もれています

データを取得したかどうかを確認するには、good() と !eof() を使用します。ストリーム オブジェクト ( exception() ) にフラグを設定して、エラーが発生した場合に例外をスローするようにストリームに指示できます。これにより、取り扱いが数倍簡単になります。

于 2013-05-15T12:30:07.823 に答える