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