在同一系统上的两个应用程序之间传递数据的首选方法是什么?

zoo*_*opa 10 c++ sockets dll networking

我有一个应用程序(A)需要启动另一个应用程序(B).我需要在应用程序之间传递数据.我可以想到两种方法.首先是打开一个插座.第二种是通过dll共享数据.

开口插座方法很简单.

dll方法我有一些问题吗?我可以将插件dll加载到B.我想创建一个A可以用来将数据传递给B的dll.加载dll时,只加载了一个dll实例?如果是这样,这是否意味着可以在加载dll的应用程序之间共享数据?

什么是更好的选择?

还有其他方法吗?

小智 14

您无法通过DLL有效地共享数据.其他方法:

  • 磁盘文件
  • 管道
  • 共享内存
  • 消息
  • RPC
  • CORBA
  • COM
  • 等等

  • @zoo它很难控制,如果DLL被卸载则不起作用,并且需要对DLL进行特殊编译 - 默认情况下不共享DLL中的数据. (3认同)

Jas*_*rue 5

最简单的方法(假设Windows,因为你提到了一个DLL)可能是使用CreateProcess并打开子进程的管道,如下面的简化形式所述:http://msdn.microsoft.com/en-us/library/ms682499的.aspx

命名管道可以替代,特别是如果您无法控制所有进程的生命周期.http://msdn.microsoft.com/en-us/library/aa365590.aspx

对于简单的情况,邮件槽可能是一个充分的选择.

http://msdn.microsoft.com/en-us/library/aa365574.aspx#base.using_a_mailslot_for_ipc

这是Windows的各种进程间通信技术的更长列表. http://msdn.microsoft.com/en-us/library/aa365574.aspx

对于本地发生的事情,使用套接字似乎有点矫枉过正.此外,您必须实施自己的安全机制以防止欺骗攻击,而不是依赖于大多数其他IPC方法的集成安全机制.