两个应用程序/进程如何通过COM进行通信?

时间:2010-09-01 03:48:15

标签: c++ com communication

我正在寻找一种方法来减轻将数据从一个应用程序/进程传输到另一个应用程序/进程的难度。

据说在同一个操作系统(这里是windows xp)中进行通信比UDP或TCP更好。

您能提供一些说明这一点的核心代码吗?

3 个答案:

答案 0 :(得分:1)

查看boost.Interprocess以便轻松进行沟通

答案 1 :(得分:1)

嗯,是的,COM支持对进程外COM服务器的远程过程调用。您从客户端进行调用,它在另一个进程中运行,就像在该进程内部调用它一样。代码片段没有多大意义,因为它看起来像正常的函数调用完全

你必须要有相当多的管道和配置来完成这项工作。您通常需要一个代理/存根DLL来帮助编组函数调用的参数。它们通常是从您编写的描述接口的IDL自动生成的。如果你传递的参数是“不寻常的”,那么你可能需要编写一个自定义的编组器。通过不传递不透明指针或可变大小的数据块通常可以轻松避免这种情况。

Visual Studio可以自动完成大量的工作,ATL非常有帮助。无意中做错事绝对要难以解决问题。如果您以前从未这样做过,那么期待几个月的时间来加快速度。获得好的学习材料可能很困难,这已经过时了。这些东西最近在托管环境中完成。更容易自动生成所需的代理。

答案 2 :(得分:1)

在我的项目中,我决定使用命名管道进行进程间通信。