为什么在本地Windows机器上,使用命名管道进行进程间通信(IPC)比使用UDP更好?或者在某些情况下,UDP可能更好?
为什么在本地Windows机器上,使用命名管道进行进程间通信(IPC)比使用UDP更好?或者在某些情况下,UDP可能更好?
即使在本地主机上,UDP数据包也可能会丢失。此外,由于UDP是基于数据报的,并且没有保证传递,因此很难传输较大的数据块。最后,在本地主机上,浏览器有时会阻止UDP。一般来说,UDP通常不考虑用于单台计算机间的进程间通信。
在Windows上,我建议使用内存映射文件+同步原语作为最快且可能最简单的方法。当您设法让命名管道正常工作时,命名管道通常也能很好地工作,但我在这里看到了很多关于如何使命名管道正常工作的问题(而我还没有看到过任何关于MMF的抱怨)。
我们有一个产品MsgConnect,它提供基于套接字、UDP和MMF的传输方式,适用于本地或跨网络的IPC,因此我对这个主题有实际经验。曾经考虑过支持命名管道,但最终被其他机制所取代。