使用IPC实现进程间通讯(服务端使用Windows服务实现)

本文介绍如何使用 .NET Remoting 实现进程间通讯。主要内容包括:定义通讯接口及类,设置服务端实现 IPC 通讯接口,配置 IPC 服务端及客户端连接参数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Net下看通过NetRemoting方便的实现进程间通讯,下面就具体总结一下:
1、先定义通讯的接口,并封装成库:
注意,如果通讯时涉及到自定义的类型,一定要添加[Serializable]属性,使类可串行化。
[Serializable]
public class IPCInfo
{
。。。
}

public interface IPCDll
{
  void SetInfo(PCInfo);
  PCInfo GetInfo();
}

2、服务端
用于服务端一般在后台运行,所以非常适合使用Windows服务来实现。
1)、实现接口
public class IPCSrvInfo : MarshalByRefObject, IPCDll // MarshalByRefObject是必须的,且要为第一个
{
  public void SetInfo(PCInfo)
  {
  . ..
  }
  PCInfo GetInfo();
  {
  ...
  }
}

2)、创建IPC服务端
System.Collections.IDictionary dicProp = new System.Collections.Hashtable();
dicProp["priority"] = "20";
dicProp["portName"] = "MyIPC";
dicProp["authorizedGroup"] = "Everyone"; //如果以服务方式运行,这句是必须的,否则客户端没有连接权限。

IpcServerChannel srvChannel = new IpcServerChannel(dicProp, null);

ChannelServices.RegisterChannel(srvChannel, false);
RemotingConfiguration.RegisterWellKnownServiceType(
    typeof(IPCSrvInfo ),
    “SrvInfo”,
    WellKnownObjectMode.Singleton
    );

服务的安装、启动具体看下一遍‘C#编写Windows服务并安装与启动’;

3)、客户端
服务端启动后,客户端就可以连接了
IpcClientChannel clientChan = new IpcClientChannel();
ChannelServices.RegisterChannel(clientChan, false);

string logUrl = LogIpc.GetFullUrl(LogIpc.AddLogUriName);
IPCDll logFun = (IPCDll)RemotingServices.Connect(
    typeof(IPCDll),
    “Ipc://MyIPC/SrvInfo"
    );
获取后,就可以通过LogFun来调用接口中的方法了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值