我有一个Java应用程序,通过TCP套接字连接到一个用C/C++开发的“服务器”。
这两个应用程序都在同一台Solaris计算机上运行(但我们考虑最终迁移到Linux)。交换的数据类型是简单消息(登录、登录确认,然后客户端请求某些东西,服务器回复)。每条消息约为300字节。
目前我们正在使用Sockets,一切正常,但我正在寻找更快的数据交换方式(更低的延迟),使用IPC方法。
我已经在网上进行了研究,并找到以下技术的参考:
- 共享内存
- 管道
- 队列
- 以及所谓的DMA(直接内存访问)
但是我找不到它们各自表现的适当分析,也不知道如何在JAVA和C/C++中实现它们(使它们可以相互通信),除了我能想象如何做的管道。
有人可以评论这种情况下每种方法的性能和可行性吗?有没有有用的实现信息的指针/链接?
编辑/更新
根据我在这里得到的评论和答案,我找到了有关Unix域套接字的信息,它似乎是建立在管道之上的,并将节省整个TCP堆栈。这是平台特定的,因此我计划使用JNI或juds或junixsocket进行测试。
下一步可能是直接实现管道,然后是共享内存,尽管我已被警告存在额外的复杂性...
感谢您的帮助