在两个 C# exe 之间进行通信 [关闭]
Posted
技术标签:
【中文标题】在两个 C# exe 之间进行通信 [关闭]【英文标题】:Communicating between two C# exe [closed] 【发布时间】:2013-11-21 07:13:34 【问题描述】:我创建了一个 C# WPF 项目。我有两个 exe 正在运行,都是由我创建的。一个 exe 有一个 Window,而另一个没有。
现在我想从 exe 到另一个 . 我想从 exe(无窗口)向对方发送一条小消息。
我真的对 Windows C# 中的这个 IPC 感到困惑,谁能建议我哪一个对这个问题有好处
【问题讨论】:
@sthotakura。您能否分享任何链接或示例。 @user2431170 你能用搜索引擎吗? @user2431170 tech.pro/tutorial/855/… @JonathonReinhart。正如我已经提到的,我很困惑在 C# 中实现 IPC。对不起,我不是像你这样的天才,无法找出我需要的一切。仅供参考,我在谷歌搜索近 1 小时后发布了这个问题 @sthotakura。非常感谢。你分享的教程真的很有用。 【参考方案1】:你不应该对你的 cmets 粗鲁。
现在试试这个:
在客户端:使用以下几行创建客户端代理
// Create the proxy:
EndpointAddress ep = new EndpointAddress("net.pipe://localhost/SomeAddress/PipeEndpoint/");
IMyinterface instance = ChannelFactory<IMyinterface>.CreateChannel(new NetNamedPipeBinding(), ep);
// now use it:
instance.SendMessage();
在服务器端,运行服务器并注册对象来做这项工作:
ServiceHost host = new ServiceHost(new MyClass(), new Uri("net.pipe://localhost/SomeAddress"));
host.AddServiceEndpoint(typeof(IMyinterface), new NetNamedPipeBinding(), "PipeEndpoint");
host.Open();
服务器端的 MyClass 代码也是如此:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MyClass : IMyinterface
public void SendMessage()
// do something here
并且接口应该在客户端和服务器项目都引用的单独项目中:
[ServiceContract]
interface IMyinterface
[OperationContract]
void SendMessage();
备注:当我说“客户”时,我指的是发送消息的人。服务器是接收消息的人。我认为在你的架构中是相反的,所以我想清楚我的术语。
希望对你有帮助
【讨论】:
嗨 Rami,我使用了相同的示例,由 @sthotakura 提供。我想这看起来也一样。但我得到了 EndPointNotFoundException。 这是我收到的消息,net.pipe://localhost/CommService/ 上没有可以接受消息的端点监听。 (1) 重新检查地址的正确性。 (2) 可能是时间问题,可能是你的客户端在服务器打开管道通道之前尝试访问服务器? 请在此处查看服务器代码pastebin.com/n16zCMbZ 和客户代码pastebin.com/n0N2CChW以上是关于在两个 C# exe 之间进行通信 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 桌面应用程序和移动(android)设备之间通过本地网络进行通信? [关闭]