.NET Remoting服务器端订阅客户端事件
来源:互联网 发布:计算机技术专硕 网络 编辑:程序博客网 时间:2024/05/17 00:50
模拟情景:在天龙八部中,有信使通知住持,说,带头大哥说契丹人要来抢经书了。客户端订阅服务器端事件,于是向服务器端发送消息。
1.服务器端代码,设计服务器端要提供的服务
namespace RemotingLib
{
/// <summary>
/// 拨通电话的委托,
/// </summary>
/// <param name="msg">电话中要传输的消息</param>
public delegate void PhoneUpEventHandler(string msg);
public interface ICall
{
void PhoneUp(string msg);
}
public class RemotePhone : MarshalByRefObject, ICall
{
public static event PhoneUpEventHandler PhoneUpEvent;
#region ICall 成员
public void PhoneUp(string msg)
{
PhoneUpEvent(msg);
}
#endregion
/// <summary>
/// 设置对象的生命周期无限大。意味着这个远程对象始终处于激活状态,以便能够激活事件
/// </summary>
/// <returns></returns>
public override object InitializeLifetimeService()
{
return null;
}
}
}
2.将提供服务的对象公布出来
class Program
{
static int count = 0;
static void Main(string[] args)
{
//1.注册通信通道
TcpChannel tChannel = new TcpChannel(8888);
ChannelServices.RegisterChannel(tChannel);
//2.在通道中注册对象,不同的激活方式对应不同的注册方式
//服务端激活
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotePhone), "yoyo", WellKnownObjectMode.Singleton);
RemotePhone.PhoneUpEvent += new PhoneUpEventHandler(RemotePhone_PhoneUpEvent);
Console.WriteLine(DateTime.Now);
Console.ReadKey();
}
static void RemotePhone_PhoneUpEvent(string msg)
{
count+=1;
Console.WriteLine("第" + count + "个人说:" + msg);
}
}
3.客户端调用远程对象代码
class Program
{
static void Main(string[] args)
{
//注意:客户端不能使用端口号,否则报错:套接字遇到一个已死的网络
TcpChannel tChannel = new TcpChannel();
ChannelServices.RegisterChannel(tChannel);
ICall call = (ICall)Activator.GetObject(typeof(ICall), "tcp://localhost:8888/yoyo");
call.PhoneUp("住持,带头大哥说契丹人要来抢经书了");
Console.ReadKey();
}
}
- .NET Remoting服务器端订阅客户端事件
- .net remoting 事件
- 如何用.net Remoting实现一个客户端需要连接多个服务器端?
- 如何用.net Remoting实现一个客户端需要连接多个服务器端?
- 客户端触发服务器端事件
- 服务器端调用客户端事件
- .net客户端得到服务器端控件方法(服务器端控件触发客户端事件)
- Asp.Net客户端触发服务器端事件及_dopostback
- Asp.Net客户端触发服务器端事件及_dopostback
- .NET Remoting中的事件处理
- .NET Remoting中的事件处理
- 在NET Remoting中傳遞事件
- .NET Remoting中的事件处理
- .NET Remoting中的事件处理
- .NET Remoting中的事件处理
- .NET Remoting中的事件处理
- 客户端回调服务器端事件
- Remoting模仿QQ实现客户端,服务器端聊天功能
- linux内存管理之伙伴系统(建立)
- web服务器和应用服务器概念比较
- android面试第四集
- 安装虚拟机 bochs(编译安装)
- android面试第五集
- .NET Remoting服务器端订阅客户端事件
- Instance-based learning
- 计算机组成原理期末复习重点总结(2011—2012学年)
- 商务英语情景对话
- 字符串旋转与移位
- Perl变量作用域和自定义函数小结
- 网络编程指南
- SEDA高性能互联网服务器架构模型(1)
- 我到底算不算程序员