C++ c++;通过Windows上的streambuf实现IPC

C++ c++;通过Windows上的streambuf实现IPC,c++,windows,ipc,streambuf,C++,Windows,Ipc,Streambuf,我有一个序列化为二进制数据流的消息对象(它可以是任何std::streambuf),我想将它传输到另一个进程。关键是,服务器应用程序必须处理多个客户端,连接必须是异步的(因为有多个客户端),并且是双向的(在后台,它可能由两个分离的连接实现)。消息长度可变,应该排队。我应该为此选择什么样的IPC方法?有没有简单的方法通过应用程序传输流缓冲区?速度不是很关键,但最好不要阻塞应用程序太长时间。任何事情都将在Windows下本地完成(我的目标是XP和更新版本),不需要网络支持 我还需要一个收听传入连接的

我有一个序列化为二进制数据流的消息对象(它可以是任何std::streambuf),我想将它传输到另一个进程。关键是,服务器应用程序必须处理多个客户端,连接必须是异步的(因为有多个客户端),并且是双向的(在后台,它可能由两个分离的连接实现)。消息长度可变,应该排队。我应该为此选择什么样的IPC方法?有没有简单的方法通过应用程序传输流缓冲区?速度不是很关键,但最好不要阻塞应用程序太长时间。任何事情都将在Windows下本地完成(我的目标是XP和更新版本),不需要网络支持


我还需要一个收听传入连接的可能性。服务器应该自动检测新连接,进行一些握手并接受(如果兼容的话)。我知道我需要自己写很多我提到的东西。无论如何,它必须是可能实现的,但当然越简单越好。

您可以在windows中使用命名管道。 见MSDN参考:


您还可以将其设置为全双工(双向)和异步。如果您熟悉windows上的文件I/O API,那么它的使用应该很简单。

您可以在windows中使用命名管道。 见MSDN参考:


您还可以将其设置为全双工(双向)和异步。如果您熟悉Windows上的文件I/O API,那么它应该是直接使用的。

NO.STD::FStand是基于C++标准的,而命名管道是OS特定的概念。您必须使用MS API。如果你坚持使用跨平台代码,你可以试试boost IPC。我需要更具体的信息。由于我需要多个客户端,我应该为每个客户端创建一个管道吗?如何创建与服务器应用程序的“握手”?MSDN在这里不清楚。我需要一个连接到服务器的能力,它应该自动检测连接请求并将其添加到客户端池。否。STD::FStand是基于C++标准的,而命名管道是OS特有的概念。您必须使用MS API。如果你坚持使用跨平台代码,你可以试试boost IPC。我需要更具体的信息。由于我需要多个客户端,我应该为每个客户端创建一个管道吗?如何创建与服务器应用程序的“握手”?MSDN在这里不清楚。我需要一个连接到服务器的能力,它应该自动检测连接请求并将其添加到客户端池。