【问题标题】:Communicating between two C# exe [closed]在两个 C# exe 之间进行通信 [关闭]
【发布时间】:2013-11-21 07:13:34
【问题描述】:

我创建了一个 C# WPF 项目。我有两个 exe 正在运行,都是由我创建的。一个 exe 有一个 Window,而另一个没有。

现在我想从 exe 到另一个 . 我想从 exe(无窗口)向对方发送一条小消息。

我真的对 Windows C# 中的这个 IPC 感到困惑,谁能建议我哪一个对这个问题有好处

【问题讨论】:

  • @sthotakura。您能否分享任何链接或示例。
  • @user2431170 你能用搜索引擎吗?
  • @JonathonReinhart。正如我已经提到的,我很困惑在 C# 中实现 IPC。对不起,我不是像你这样的天才,无法找出我需要的一切。仅供参考,我在谷歌搜索近 1 小时后发布了这个问题
  • @sthotakura。非常感谢。你分享的教程真的很有用。

标签: c# wpf windows notifications ipc


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多