<分区>
Possible Duplicate:
Inter-process communication between languages/operating systems
我需要在 java 和 C++ 进程之间进行进程间通信,因为两者是不同的进程,所以我不能使用 JNI。我正在考虑使用套接字通信,但是除了套接字通信之外还有其他解决方案吗?哪个更好更快?
<分区>
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 格式的文本字段接收属性更改事件吗?
javascript - 在 Electron 中的两个渲染器进程之间直接通信
java - 分离的实体传递到持久化 : one to one to relationship
java.io.StreamCorruptedException : invalid stream header: 626F6775 using mysql blob, java对象和自定义对象