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