我最近被迫找到最适合 java 和 c++ 之间通信的 IPC 协议。
我搜索了 SO 以找到最好的协议,我发现在 SO 中套接字是最好的方法。但我找不到任何关于插座的优缺点的信息!所以我想知道这个协议的优点,也想知道其他协议与套接字的优点,以便为我的应用程序选择最佳协议。
我的两个应用程序很可能在同一台机器上运行。
更新我应该首先选择我的协议,然后我可以决定在哪个系统配置上运行它。
最好的 IPC 方法实际上取决于您的通信类型:消息传递、确保互斥执行、共享数据是各种 IPC,但套接字并不是所有 3 的解决方案。
考虑或提供信息,您希望在应用程序之间以何种形式传递信息。也许你会找到一个典型的场景(比如生产者-消费者问题)。
如果您遇到消息传递问题,原则上类似于老式 TCP 服务,那么套接字是一个好主意,因为它们经过充分测试且易于调试;它们提供完全解耦,但与管道相比,在本地运行并没有缺点,因为内核可以有效地阻塞一个应用程序(发送方或接收方)。
套接字可以是 UDP、TCP 或 Unix 套接字。在任何情况下,您都不需要带有套接字的本地 IPC 的网卡。