【问题标题】:NamedPipe multiple serversNamedPipe 多台服务器
【发布时间】:2014-10-15 04:00:37
【问题描述】:

对于简单的 IPC,我选择了 NamedPipes 在进程(本地)之间进行通信。

由于需求的变化,应该有多个服务器实例,这导致同一个管道名上有多个“侦听器”。

但是好像有问题。这些侦听器中只有一个收到消息,其他所有实例都没有。是否有某种“广播”消息的方式?

我已经看过this question,基本上是同一个问题,但是没有答案。

代码:

现在我使用的管道服务器非常类似于this answer

我的客户(在这种情况下是发件人)代码是:

public static void SendToPipe(string pipeName, string data)
{
    using (var p = new NamedPipeClientStream(pipeName))
    {
        p.Connect();

        using (var w = new StreamWriter(p))
        {
            w.WriteLine(data);
            w.Flush();
        }
    }
}

respectivly:

static void Main(string[] args)
{
    SendToPipe("DEFAULT_PIPE_NAME", "Some string to transmit");
}

【问题讨论】:

  • 您是否考虑过更高级的框架,例如满足广播需求的自托管 SignalR?
  • 我需要至少在 C#、Java 和 python 中可用的东西。将调查 SignalR
  • 关于高层框架-我推荐WCF,你声明通信接口,你不必关心后台实现(可以命名管道,http,tcp ...)跨度>
  • WCF 在 Java、python 中不可用...
  • 可以选择 UDP 吗?您显然需要处理丢弃的数据包。

标签: c# ipc named-pipes


【解决方案1】:

我终于找到了一个解决方案(不确定它是否最佳 - 但它正在工作)。它基于使用 NamedPipeClientStream.NumberOfServerInstances。 看看我的question thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 2014-04-20
    • 2018-07-24
    • 2016-03-12
    • 1970-01-01
    • 2021-02-22
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多