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