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

use*_*932 2 c++ java ipc

可能重复:
语言/操作系统之间的进程间通信

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

lee*_*mes 6

一般来说,您有以下可能性(可能会有更多,但这些是"流行的"):

  • 标准输入和输出通道.(+)易于实现(+)快速(+)易于调试( - )您无法连接/分离已经运行的进程

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

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

  • TCP套接字通信.( - )速度较慢,但​​应足够快(+)可以很容易地扩展到远程通信(+)易于调试( - )应用程序或同一应用程序实例之间可能的TCP端口冲突.

就个人而言,我更喜欢TCP套接字通信,因为有可能(几乎)没有源代码更改进行远程连接.但是,必须注意不要在同一台机器上使用两次相同的端口,这是不可能的.您可能已经知道,第二个实例将无法侦听端口.可能的解决方法是使用端口范围.