java - Java和C++进程之间的通信

标签 java c++ ipc

<分区>

Possible Duplicate:
Inter-process communication between languages/operating systems

我需要在 java 和 C++ 进程之间进行进程间通信,因为两者是不同的进程,所以我不能使用 JNI。我正在考虑使用套接字通信,但是除了套接字通信之外还有其他解决方案吗?哪个更好更快?

最佳答案

一般来说,您有以下几种可能性(可能还有更多,但这些是“流行”的):

  • 标准输入和输出 channel 。 (+) 易于实现 (+) 快速 (+) 易于调试 (-) 您不能附加/分离到/从已经运行进程

  • 命名管道。 (+) 快速 (-) 系统相关

  • IPC 系统,例如 DBus。 (-) 系统依赖

  • TCP 套接字通信。 (-) 较慢,但应该足够快 (+) 可以轻松扩展到远程通信 (+) 易于调试 (-) 可能的 TCP 端口应用程序或同一应用程序的实例之间存在冲突。

就个人而言,我更喜欢 TCP 套接字通信,因为可以在(几乎)不更改源代码的情况下建立远程连接。但是,必须注意不要在同一台机器上使用同一个端口两次,这是不可能的。正如您可能已经知道的那样,第二个实例将无法监听端口。一种可能的解决方法是使用端口范围。

关于java - Java和C++进程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486754/

相关文章:

c++ - valgrind 在单链接列表示例中显示内存泄漏

java - 我可以使用缓冲的 JGoodies 格式的文本字段接收属性更改事件吗?

java - 如何在边框底部的每个角放置两个按钮

c++ - 转换 .wav 文件中的 RTP 序列负载

c++ - 两个连续的换行符作为分隔符 - C/C++

javascript - 在 Electron 中的两个渲染器进程之间直接通信

java - 分离的实体传递到持久化 : one to one to relationship

java.io.StreamCorruptedException : invalid stream header: 626F6775 using mysql blob, java对象和自定义对象

c - 是否有可能以某种方式在 Docker 容器之间或容器与主机之间使用 POSIX 信号量?

c - 共享内存中的信号量、进程和递增变量