C++和Java之间的低延迟IPC
对于以下情况,实现C++/Java IPC 的最佳方法是什么?
(最近有人问了类似的问题,但我的要求更具体)
我有两个程序 - 一个用C++编写,另一个用Java编写 - 需要相互通信。两者都在同一台计算机上运行。
这些程序相互发送消息。消息通常很短(小于几百个字节),但大小可能为 100KB 或更大。
消息不需要确认(即,不是像HTTP这样的请求/响应模型)。例如,C++程序向 Java 程序发送消息,Java 程序可以通过稍后向C++程序发送消息来回复,反之亦然。
理想的解决方案应具有a)非常低的延迟,b)没有安全问题(用户不必授权打开端口等)和c)将与平台无关。
我的第一个想法是使用套接字 - 每个程序都充当另一个程序的服务器。套接字比其他形式的IPC具有更多的开销,如果我让系统自动分配端口号,我不知道服务器将如何通知客户端端口号。我也考虑过命名管道,但它们在不同平台上不受支持(至少不是一致的)。JNI看起来像一个选项,但它可以跨越进程边界吗?
有什么建议吗?
谢谢!
后续问题
- 如果我使用套接字,我是否需要打开两个套接字以允许如上所述的异步通信?