代码之家  ›  专栏  ›  技术社区  ›  Paul Kelly

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

  •  8
  • Paul Kelly  · 技术社区  · 14 年前

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

    开口插座的方法是直截了当的。

    我有什么问题吗?我可以将插件dll加载到B中。我想创建一个dll,a可以使用它将数据传递给B。加载dll时,是否只加载了dll的一个实例?如果是这样,这是否意味着可以在加载dll的应用程序之间共享数据?

    更好的选择是什么?

    还有其他方法吗?

    6 回复  |  直到 14 年前
        1
  •  14
  •   anon anon    14 年前

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

    • 共享内存
    • 信息
    • CORBA公司
    • 等。
        2
  •  5
  •   John Saunders    14 年前

    最简单的方法(假设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方法的集成安全机制。

        3
  •  2
  •   carribus    14 年前

    我建议用插座。

        4
  •  0
  •   Juan Zamora    14 年前

        5
  •  0
  •   Community TheSoundDefense    7 年前

    我同意你的观点 Juan Zamora M 除了提供数据的服务应该有一个API,在需要时可以请求,而不是在通过侦听器更改时推送。

        6
  •  0
  •   gumby    13 年前

    这也许会有帮助。 Sharing Files and Memory