public override void 处理接收(IPEndPoint __远端, N事务 事务, object 负载, IN上下文 __报文分派) { var __注册报文S = 负载 as M注册响应; if (__注册报文S != null) { //验证账号 if (!__注册报文S.验证通过) { Console.WriteLine("客户端: 注册失败"); return; } //验证成功 Console.WriteLine("客户端: 注册成功"); this.关闭请求(); //心跳 Console.WriteLine("客户端: 开启心跳任务"); Task.Factory.StartNew(() => { Thread.Sleep(2000); while (true) { this.发送通知(__远端, new M心跳()); Thread.Sleep(5000); } }); } }
public Tuple <N事务, object> 解码(byte[] 数据) { var __解码 = new H字段解码(数据); var __消息头 = __解码.解码字节数组(消息头长度); var __功能码 = __解码.解码Int16(); if (!报文字典.ContainsKey(__功能码)) { throw new ApplicationException(string.Format("功能码无效: {0}", __功能码)); } var __发方事务 = __解码.解码Int32(); var __收方事务 = __解码.解码Int32(); var __负载数据 = __解码.解码字节数组(__解码.剩余字节数); var __负载 = 解码(__功能码, __负载数据); var __事务 = new N事务 { 发方事务 = __发方事务, 收方事务 = __收方事务, 功能码 = __功能码.ToString("X4") }; if (通道字典 != null && 通道字典.ContainsKey(__功能码)) { __事务.通道标识 = 通道字典[__功能码]; } return(new Tuple <N事务, object>(__事务, __负载)); }
public override void 处理接收(IPEndPoint __远端, N事务 事务, object 负载, IN上下文 __上下文) { var __注册报文C = 负载 as M注册请求; if (__注册报文C != null) { Console.WriteLine("服务器: 客户端请求注册 " + __远端.ToString()); //验证账号 Console.WriteLine("服务器: 验证账号"); //验证成功 Console.WriteLine("服务器: 验证通过"); this.发送响应(__远端, 事务, new M注册响应 { 验证通过 = true, 用户名 = __注册报文C.用户名, 角色 = 0 }); this.关闭请求(); //心跳 Console.WriteLine("服务器: 开启心跳任务"); Task.Factory.StartNew(() => { Thread.Sleep(2000); while (true) { this.发送通知(__远端, new M心跳()); Thread.Sleep(5000); } }); } }
public override void 处理接收(IPEndPoint __远端, N事务 事务, object 负载, IN上下文 __上下文) { var __心跳报文 = 负载 as M心跳; if (__心跳报文 != null) { Console.WriteLine("服务器: 收到心跳 " + __远端.ToString()); } }
public byte[] 编码(N事务 事务, object 负载) { var __功能码 = _功能码字典[负载.GetType()]; var __消息内容 = 编码(负载); var __消息内容长度 = 10 + __消息内容.Length; var __编码 = new H字段编码(); __编码.编码字段(消息头标识, __消息内容长度, __功能码, 事务.发方事务, 事务.收方事务, __消息内容); return(__编码.获取结果()); }
public byte[] 编码(N事务 __事务, object __负载) { var __功能码 = 获取功能码(__负载.GetType()); var __功能码编码 = Encoding.UTF8.GetBytes(__功能码); var __编码 = new H字段编码(); var __二进制 = 编码(__负载); var __消息内容长度 = 10 + __功能码编码.Length + __二进制.Length; __编码.编码字段(消息头标识, __消息内容长度, __事务.发方事务, __事务.收方事务, (Int16)__功能码编码.Length, __功能码编码, __二进制); return(__编码.获取结果()); }
public Tuple <N事务, object> 解码(byte[] __数据) { var __解码 = new H字段解码(__数据); var __消息头 = __解码.解码字节数组(消息头长度); var __发方事务 = __解码.解码Int32(); var __收方事务 = __解码.解码Int32(); var __功能码长度 = __解码.解码Int16(); var __功能码 = __解码.解码UTF8(__功能码长度); var __负载 = 解码(__功能码, __解码.解码字节数组(__解码.剩余字节数)); var __事务 = new N事务 { 发方事务 = __发方事务, 收方事务 = __收方事务, 功能码 = __功能码 }; if (通道字典 != null && 通道字典.ContainsKey(__事务.功能码)) { __事务.通道标识 = 通道字典[__事务.功能码]; } return(new Tuple <N事务, object>(__事务, __负载)); }
public override void 处理接收(IPEndPoint __远端, N事务 事务, object 负载, IN上下文 __报文分派) { Console.WriteLine("客户端: 收到心跳"); }