1

我有一个 .NET 应用程序向 C++ 应用程序发送数据。他们在消息模式下使用命名管道来发送数据。在 C++ 端获取数据我猜我必须执行 ReadFile 才能将消息放入缓冲区。但是,如果缓冲区太小,我会得到 ERROR_MORE_DATA,我应该再次发出 ReadFile。自从我完成任何 cpp 编码以来已经很长时间了,所以我想知道是否有一种最佳实践方法来进行这种重新分配,然后将所有字节缓冲区重新组装到一个缓冲区中。
我只能想到某种指向缓冲区的指针列表,并且您不断增长列表,直到您完成计算大小分配一个巨大的缓冲区并使用 memcpy 复制所有内容。有没有人能想到的更好的方法。

4

1 回答 1

0

为什么不先从 C# 端向下传递一个数据包,其中包含要发送的数据的大小?在 C++ 端,使用 ReadFile 从管道中读取它,并根据刚刚从管道接收到的大小创建缓冲区。

然后执行另一个 ReadFile 用实际数据填充正确大小的缓冲区。

因此,在 C++ 端有两个 ReadFile,一个用于获取数据的大小,一个用于获取实际数据。C#端先发送数据的大小,再发送实际数据。

于 2012-10-11T14:55:27.687 回答