C++ アプリにデータを送信する .NET アプリケーションがあります。メッセージ モードで名前付きパイプを使用してデータを送信しています。C++ 側でデータを取得するには、ReadFile を実行してメッセージをバッファに入れる必要があると推測しています。ただし、バッファが小さすぎる場合は ERROR_MORE_DATA が発生するため、ReadFile を再度発行する必要があります。cppコーディングを行ってから本当に長い時間が経ちました。そのため、この種の再割り当てを行い、すべてのバイトバッファを1つのバッファに再構築するベストプラクティスの方法があるのではないかと思っています.
バッファへのポインタのある種のリストしか考えられず、サイズの計算が完了するまでリストを増やし続け、1つの大規模なバッファを割り当て、memcpyを使用してすべてをコピーします。誰でも考えられるより良い方法はありますか?
1 に答える
0
送信するデータのサイズを含むパケットを最初に C# 側からパイプに渡してみませんか? C++ 側では、ReadFile を使用してパイプからこれを読み取り、パイプから受け取ったばかりのサイズに従ってバッファーを作成します。
次に、別の ReadFile を実行して、正しいサイズのバッファーに実際のデータを入力します。
したがって、C++ 側に 2 つの ReadFile があり、1 つはデータのサイズを取得し、もう 1 つは実際のデータを取得します。C# 側では、最初にデータのサイズを送信し、次に実際のデータを送信します。
于 2012-10-11T14:55:27.687 に答える