3

たとえば、メモリ内のデータを取得し、それを出力文字列ストリーム (バイナリ データとして) に読み込み、これをクライアント アプリケーションが処理するソケットに書き込むことができるかどうかを知りたいです。

これを試みているときに遭遇する問題は次のとおりです。

例:

char name[1024] = "Test";
std::ostringstream message (std::stringstream::out | std::stringstream::binary);

len = strlen(name);
message.write(reinterpret_cast<const char*>(&len), sizeof(int));
message.write(test, len*sizeof(char));

この文字列ストリームをすべてのデータを含むソケットに書き込みたいのですが、問題は次のとおりです。文字列ストリームの書き込みは初回のみ実行され、この場合は 4 (文字列の長さ) を書き込み、その後の書き込みは実行されません。 . ここで何か不足していますか?

これが最善の方法ではない場合、これを達成するための最良の方法は何ですか? これは、キャッシュされたメモリ スナップショットのファイル I/O を削減するためです。

前もって感謝します..

4

1 に答える 1

3

あなたのコード (マイナーな修正を加えたもの)は私にとってはうまくいくように見えるので、バッファリングされたバイナリ データを正しく処理していることを確認してくださいstd::string

于 2014-04-07T07:45:07.137 に答える