【发布时间】: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