简单的匿名管道 - 您使用啥包装器模型? (WinAPI, C++)
Posted
技术标签:
【中文标题】简单的匿名管道 - 您使用啥包装器模型? (WinAPI, C++)【英文标题】:Simple anonymous pipes - what wrapper model you use? (WinAPI, C++)简单的匿名管道 - 您使用什么包装器模型? (WinAPI, C++) 【发布时间】:2008-12-07 19:31:07 【问题描述】:我在 Windows 中有两个正在运行的进程,每个进程都有一个连接到另一个进程的管道。
我想序列化一个复杂的类并将其从一个进程传输到另一个进程。我已经制定了序列化程序,并且我知道管道正在发送二进制流。我应该如何发送我的序列化数据?我正在使用 WinAPI 和 C++。
我应该开发自定义协议吗?如果是这样,它应该是这个特定类的通用还是唯一的?发送序列化类时可以保留虚拟表吗?
在这种情况下是否有常用的模型或设计模式?一些示例代码将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:这是boost::serialization
的教程。我可以想象它可以很好地通过管道发送数据并在另一端反序列化:http://www.boost.org/doc/libs/1_37_0/libs/serialization/doc/tutorial.html
【讨论】:
【参考方案2】:您可能想查看protocol buffer。
【讨论】:
【参考方案3】:您可以使用 boost::asio::windows::stream_handle 来像 io 一样组织 iostream,并异步进行。
【讨论】:
【参考方案4】:您不必担心 vtables,因为 boost serialize 会担心类型。您唯一需要做的就是确保任何类型都是序列化的,然后在反序列化时使用另一侧的 EXACT SAME TYPE。
【讨论】:
所以没有一些“通用”模型\协议...比如说,几个不同的类?以上是关于简单的匿名管道 - 您使用啥包装器模型? (WinAPI, C++)的主要内容,如果未能解决你的问题,请参考以下文章