【问题标题】:Named pipes vs. UDP for IPC on WindowsWindows 上 IPC 的命名管道与 UDP
【发布时间】:2011-09-23 14:41:12
【问题描述】:

为什么命名管道更适合本地 Windows 机器上的 IPC(进程间通信)而不是 UDP?或者 UDP 有时可能会更好?

【问题讨论】:

  • TCP 没问题,不可靠的传输机制对 IPC 没用。
  • 拜托,你能解释一下你的意思吗?
  • 你先解释一下为什么要使用UDP。
  • 很可能是因为应该与我们的系统集成的系统开发人员知道什么是 UDP,并且没有使用命名管道的经验。所以我必须说服他们学习新东西。
  • @MajesticRa 然后去 TCP - 系统的开发人员很可能......比 UDP 更了解 TCP。

标签: windows udp ipc named-pipes


【解决方案1】:

即使在 localhost 上的 UDP 数据包也可能会丢失。此外,由于 UDP 是基于数据报的,并且无法保证交付,因此很难传输更大的数据块。最后,本地主机上的 UDP 有时会被浏览器阻止。一般来说,单机IPC一般都不会考虑UDP。

在 Windows 上,我推荐内存映射文件 + 同步原语作为最快且可能最简单的方法。当您管理命名管道工作时,命名管道通常运行良好,但我在这里看到很多关于如何使命名管道工作的问题(而且我还没有看到关于 MMF 的单一投诉)。

我们有一个产品,MsgConnect,它提供基于套接字、UDP 和 MMF 的传输,适用于本地或跨网络的 IPC,所以我对这个主题有实践经验。命名管道被考虑用于支持,但后来这个想法被放弃了,转而支持其他机制。

【讨论】:

  • 非常感谢您的回答!
  • 命名管道比内存映射文件简单可靠,对IPC更灵活。命名管道功能内置于 .NET 环境中并且易于使用。命名管道允许您将服务器或客户端移动到网络上的任何其他计算机。使用内存映射文件,您必须管理同步,如果您决定需要将客户端或服务器移动到另一台计算机,您必须从一开始就重写您的 IPC 代码。
  • @NealDavis 命名管道绝不是多主机通信的选择。命名管道到远程的速度很慢。
猜你喜欢
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2012-06-08
  • 1970-01-01
相关资源
最近更新 更多