Winapi 使用Win32从命名管道读取消息 我有一个.NET应用程序向C++应用程序发送数据。他们在消息模式中使用命名管道来发送数据。在C++侧,为了获取数据,我猜我必须做一个读文件来将消息获取到缓冲区。但是,如果缓冲区太小,我将获得更多错误数据,我应该再次发出ReadFile。我已经很久没有做任何cpp编码了,所以我想知道是否有一种最佳实践方法可以进行这种重新分配,然后将所有字节缓冲区重新组装到一个缓冲区中。 我只能想到一些指向缓冲区的指针列表,然后不断增加列表,直到计算完大小为止。分配一个大缓冲区,并使用memcpy复制所有内容。任何人都能想到更好的方法。

Winapi 使用Win32从命名管道读取消息 我有一个.NET应用程序向C++应用程序发送数据。他们在消息模式中使用命名管道来发送数据。在C++侧,为了获取数据,我猜我必须做一个读文件来将消息获取到缓冲区。但是,如果缓冲区太小,我将获得更多错误数据,我应该再次发出ReadFile。我已经很久没有做任何cpp编码了,所以我想知道是否有一种最佳实践方法可以进行这种重新分配,然后将所有字节缓冲区重新组装到一个缓冲区中。 我只能想到一些指向缓冲区的指针列表,然后不断增加列表,直到计算完大小为止。分配一个大缓冲区,并使用memcpy复制所有内容。任何人都能想到更好的方法。,winapi,named-pipes,Winapi,Named Pipes,为什么不先从C#端将包含要发送的数据大小的数据包传递到管道中?在C++侧,使用Read文件从管道中读取此文件,并根据管道刚刚接收的大小创建缓冲区。p> 然后执行另一个ReadFile,用实际数据填充大小正确的缓冲区 这样,C++侧的两个读文件,一个获取数据的大小,一个得到实际数据。在C端,首先发送数据的大小,然后发送实际数据。C端的消息缓冲区有多大?如果它变化了,你能给它设定一个现实的限制吗?什么能阻止你在rx端新建或删除1MB缓冲区?是的,那会有用:-)谢谢你以后可以重新锁定它们,如果你真的想

为什么不先从C#端将包含要发送的数据大小的数据包传递到管道中?在C++侧,使用Read文件从管道中读取此文件,并根据管道刚刚接收的大小创建缓冲区。p> 然后执行另一个ReadFile,用实际数据填充大小正确的缓冲区


这样,C++侧的两个读文件,一个获取数据的大小,一个得到实际数据。在C端,首先发送数据的大小,然后发送实际数据。

C端的消息缓冲区有多大?如果它变化了,你能给它设定一个现实的限制吗?什么能阻止你在rx端新建或删除1MB缓冲区?是的,那会有用:-)谢谢你以后可以重新锁定它们,如果你真的想的话。除非有最重要的原因,否则我不会为这些事烦恼。应用程序中的一些*BigBuffer结构/类不会破坏内存库:)不熟悉C#的名称管道库如何设置大于64K的消息,但这是我上次检查的系统限制(我相信实际上是65535字节)。发送的缓冲区有多大?如果数据大于65535字节,我很惊讶C端没有例外。