可能重复:
Inter-process communication between languages/operating systems
我需要在java和C ++进程之间进行进程间通信,因为两者都是不同的进程所以我不能使用JNI。我正在考虑使用套接字通信,但除了套接字通信之外还存在其他任何解决方案吗?哪个更好更快?
答案 0 :(得分:6)
一般来说,您有以下可能性(可能会有更多,但这些是“受欢迎的”):
标准输入和输出通道。(+)易于实现(+)快速(+)易于调试( - )您无法连接/分离正在运行的流程
命名管道。(+)快速( - )系统相关
IPC系统,例如DBus。( - )系统相关
TCP套接字通信。( - )速度较慢,但应足够快(+)可以轻松扩展到远程通信(+)易于调试( - )可能的TCP端口应用程序或同一应用程序实例之间的冲突。
就个人而言,我更喜欢TCP套接字通信,因为有可能(几乎)没有源代码更改进行远程连接。但是,必须注意不要在同一台机器上使用两次相同的端口,这是不可能的。您可能已经知道,第二个实例将无法侦听端口。可能的解决方法是使用端口范围。
答案 1 :(得分:0)
您是否看过ZeroMQ或者看起来更吸引我Crossroads I/O?
答案 2 :(得分:0)
有许多可用的IPC方法,选择哪一种方法真正取决于你想做什么
除了你有信号量和共享内存和管道等。 但这些都不容易理解和实现,虽然我相信应该有一些库,也在操作系统级别