免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.Net Remoting 实现简易的控制台命令行聊天室本套程序由四个主要的对象组成:1. ChatRoom (ChatRoom.cs): 服务器端真正的提供远程服务的对象,负责以服务器推(push)的方式把 Sender 发来的消息广播出去。 /* csc.exe ChatRoom.cs /t:library ChatRoom.dll*/using System;using System.Runtime.Remoting;Serializablepublic class ChatRoom : MarshalByRefObject /定义了 1 个名为 ChatRoomEventHandler 的事件处理委托 及其参数格式签名 public delegate void ChatRoomEventHandler(string s); /定义了 3 个 ChatRoomEventHandler 委托类型 的事件及远程回调函数 public event ChatRoomEventHandler MessageReceive; /消息接收事件 public event ChatRoomEventHandler Login; /登录事件 public event ChatRoomEventHandler Logoff; /退出事件 public void OnMessageReceive(string Message) if (MessageReceive != null) /触发 Receiver 客户端 MessageReceive 事件,广播所有消息 MessageReceive(Message); Console.WriteLine(Server: + Message); /服务器消息监视 public void OnLogin(string User) if (Login != null) /触发 Receiver 客户端 Login 事件,广播 登录 消息 Login(System say: + User + Login!); Console.WriteLine(Server: + User + Login!); public void OnLogoff(string User) if (Logoff != null) /触发 Receiver 客户端 Logoff 事件,广播 退出 消息 Logoff(System say: + User + Logoff!); Console.WriteLine(Server: + User + Logoff!); public override object InitializeLifetimeService() return null; 2. Server: 服务器。远程服务对象的宿主程序而已。/* csc.exe Server.cs*/using System;using System.Runtime.Remoting;class Server public static void Main(string Args) RemotingConfiguration.Configure(s.config); Console.WriteLine(Server . , Press Enter key to exit.); Console.ReadLine(); 下面是 Server 的配置文件 (s.config): 3. Sender (Sender.cs): 客户端消息发送器对象,负责把广播的消息发送到远程服务对象。/* csc.exe /r:ChatRoom.dll Sender.cs*/using System;using System.Timers;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Http;class Sender ChatRoom x; public static void Main(string Args) Sender y = new Sender(); y.Run(); string User; public void Run() Console.WriteLine(Messages Sender . ,Press q to exit Chatting.);/ 以配置方式获取远程服务对象实例/ RemotingConfiguration.Configure(c.config);/ x = new ChatRoom(); /以编程方式获取远程服务对象实例 System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(new System.Runtime.Remoting.Channels.Http.HttpChannel(); x = (ChatRoom) System.Activator.GetObject(typeof(ChatRoom),http:/server:8080/ChatRoomURL);/先登录 Console.WriteLine(make a name then Login Please:); User = Console.ReadLine(); /调用此远程方法,通知服务器触发 Receiver 客户端 Login 事件,广播 登录 消息 x.OnLogin(User); Console.WriteLine(welcome + User + ,Send your Message Please:); string s; /存储键入的消息文字 while (s=Console.ReadLine() != q) /如果键入 q 退出循环 /调用此远程方法,通知服务器触发 Receiver 客户端 MessageReceive 事件,广播你所键入的消息 x.OnMessageReceive(User + say: + s); /调用此远程方法,通知服务器触发 Receiver 客户端 Logoff 事件,广播 退出 消息 x.OnLogoff(User); Console.WriteLine(bye bye + User); 4. Receiver (Receiver.cs): 客户端消息接收器对象,负责自动接收远程服务对象从 Sender 接收并转发广播的所有消息。/* csc.exe /r:ChatRoom.dll Receiver.cs*/using System;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Http;/Receiver 对象必须要继承 MarshalByRefObject,由于相对于服务器, Receiver 对象 也要为其提供远程服务。class Receiver : MarshalByRefObject ChatRoom x; public static void Main() Receiver y = new Receiver(); y.Run(); public void Run() RemotingConfiguration.Configure(c.config); /相当于后期运行时绑定 x = new ChatRoom(); /向远程服务对象注册本地回调函数 this.Message_Receive1 x.MessageReceive += new ChatRoom.ChatRoomEventHandler(this.Message_Receive1); /Login Logoff 与 MessageReceive 签名一样 x.Login += new ChatRoom.ChatRoomEventHandler(this.Message_Receive1); x.Logoff += new ChatRoom.ChatRoomEventHandler(this.Message_Receive1); Console.WriteLine(Messages Receiver . ,Press Enter key to exit.); Console.ReadLine(); /退出关闭接收器 /千万不要忘记结束时取消委托关系 x.MessageReceive -= new ChatRoom.ChatRoomEventHandler(this.Message_Receive1); x.Login -= new ChatRoom.ChatRoomEventHandler(this.Message_Receive1); x.Logoff -= new ChatRoom.ChatRoomEventHandler(this.Message_Receive1); /这个就是被服务器端远程回调的函数 public void Message_Receive1(string s) Console.WriteLine(s);/在本地显示接收的广播消息 public override object InitializeLifetimeService() return null; 下面是 Sender 和 Receiver 的配置文件 (c.config): 编译:csc /t:library chatroom.cscsc /r:chatroom.dll server.cscsc /r:chatroom.dll sender.cscsc /r:chatroom.dll receiver.cs用法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌联名营销合作合同书
- 贷款支付合同
- 2025年仓储安全管理员考试专项训练题库
- 2026秋季国家管网集团浙江省天然气管网有限公司高校毕业生招聘笔试备考试题(浓缩500题)带答案详解(培优)
- 离职前没签劳动合同
- 商业咨询合同
- 公司股东合同
- 2025-2030批发零售项目商业计划书
- 运输公司合同
- 2025至2030豪华鞋行业产业运行态势及投资规划深度研究报告
- 初中常见化学式大全默写版(含答案)
- 2024-2025学年八年级数学上册期中模拟测试卷(压轴题)含答案
- 项目代管合同模板
- 2024-2025学年广东省广州市初一上学期期中历史试卷与参考答案
- 风险控制岗位招聘面试题与参考回答(某大型央企)
- 第一、二单元复习课件 2024-2025学年统编版七年级历史上册
- 2024年XX村扶贫资产收益分配方案
- 专利挖掘课件
- AQ 1119-2023 煤矿井下人员定位系统技术条件
- GB/T 15597.1-2024塑料聚甲基丙烯酸甲酯(PMMA)模塑和挤出材料第1部分:命名系统和分类基础
- 2024年广东清远纪委市监委纪律审查管理中心招聘15人历年重点基础提升难、易点模拟试题(共500题)附带答案详解
评论
0/150
提交评论