【问题标题】:Interprocess Communication between C++ app and Java App in Windows OS environmentWindows OS 环境下 C++ 应用程序和 Java 应用程序之间的进程间通信
【发布时间】:2010-11-15 14:46:18
【问题描述】:

我们在 Windows 上有一个启动 java 进程的 C++ 应用程序。这两个应用程序需要相互通信(通过 xml 的 sn-ps)。

您会选择哪种进程间通信方法,为什么?

为我们准备的方法是:共享文件、管道和套接字(尽管我认为这有一些安全问题)。我对其他方法持开放态度。

【问题讨论】:

    标签: java c++ windows ipc


    【解决方案1】:

    套接字很好。它们使您能够非常轻松地围绕每个组件创建一个黑盒测试层,并在自己的机器上运行每个组件。

    安全性绝对是一个问题,但根据它的重要性,有很多选择。您可以使用 SSL、自定义握手、密码保护登录和防火墙来帮助保护它。

    编辑: 我不建议这样做,但也有使用 JNI 的共享内存。只是想我会提到它,因为它不在您的列表中。

    【讨论】:

      【解决方案2】:

      我使用命名管道在 C# 和跨平台 c++ 应用程序之间进行通信,但结果很好。除非套接字绝对是要走的路。

      【讨论】:

        【解决方案3】:

        Ice 很酷:)

        【讨论】:

          【解决方案4】:

          我不确定您为什么认为基于套接字的通信会有安全问题(使用 SSL)。这通常是一种非常好的方法,因为它与语言无关,假设您有一个定义良好的通信协议。例如,看看 Google 的 protocol buffers - 它们生成所需的 Java 类和流。

          根据我的经验,文件系统(尤其是网络文件系统)不太适合这种通信,因为它们不一定适合 消息传递(我已经看到缓存问题导致文件未被选中例如由目标进程向上)。

          另一个选项是消息传递层(例如AMQ 或 Tibco),尽管这可能会涉及更大的管理开销(加上专业知识)来设置。

          我个人会选择纯套接字方法,因为它的灵活性和简单性。您将完全掌控

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-12-25
            • 1970-01-01
            • 1970-01-01
            • 2010-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多