可能重复:
语言/操作系统之间的进程间通信
我需要在java和C++进程之间进行进程间通信,因为两者都是不同的进程所以我不能使用JNI.我正在考虑使用套接字通信,但除了套接字通信之外还存在其他任何解决方案吗?哪个更好更快?
一般来说,您有以下可能性(可能会有更多,但这些是"流行的"):
标准输入和输出通道.(+)易于实现(+)快速(+)易于调试( - )您无法连接/分离已经运行的进程
命名管道.(+)快速( - )系统相关
IPC系统,例如DBus.( - )系统依赖
TCP套接字通信.( - )速度较慢,但应足够快(+)可以很容易地扩展到远程通信(+)易于调试( - )应用程序或同一应用程序实例之间可能的TCP端口冲突.
就个人而言,我更喜欢TCP套接字通信,因为有可能(几乎)没有源代码更改进行远程连接.但是,必须注意不要在同一台机器上使用两次相同的端口,这是不可能的.您可能已经知道,第二个实例将无法侦听端口.可能的解决方法是使用端口范围.
| 归档时间: |
|
| 查看次数: |
4525 次 |
| 最近记录: |