在两个 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)设备之间通过本地网络进行通信? [关闭]

exe之间的通信?

使用c#在两个进程之间进行通信

在 C# 中的两个窗体之间进行通信

存在哪些原则或概念可以在两个 Web 服务器之间进行安全通信? [关闭]

如何最好地在两个 ASP.NET Core 服务器应用程序之间进行通信? [关闭]