Пример #1
0
        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);
                    }
                });
            }
        }
Пример #2
0
        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>(__事务, __负载));
        }
Пример #3
0
        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);
                    }
                });
            }
        }
Пример #4
0
        public override void 处理接收(IPEndPoint __远端, N事务 事务, object 负载, IN上下文 __上下文)
        {
            var __心跳报文 = 负载 as M心跳;

            if (__心跳报文 != null)
            {
                Console.WriteLine("服务器: 收到心跳 " + __远端.ToString());
            }
        }
Пример #5
0
        public byte[] 编码(N事务 事务, object 负载)
        {
            var __功能码    = _功能码字典[负载.GetType()];
            var __消息内容   = 编码(负载);
            var __消息内容长度 = 10 + __消息内容.Length;
            var __编码     = new H字段编码();

            __编码.编码字段(消息头标识, __消息内容长度, __功能码, 事务.发方事务, 事务.收方事务, __消息内容);
            return(__编码.获取结果());
        }
Пример #6
0
        public byte[] 编码(N事务 __事务, object __负载)
        {
            var __功能码    = 获取功能码(__负载.GetType());
            var __功能码编码  = Encoding.UTF8.GetBytes(__功能码);
            var __编码     = new H字段编码();
            var __二进制    = 编码(__负载);
            var __消息内容长度 = 10 + __功能码编码.Length + __二进制.Length;

            __编码.编码字段(消息头标识, __消息内容长度, __事务.发方事务, __事务.收方事务, (Int16)__功能码编码.Length, __功能码编码, __二进制);
            return(__编码.获取结果());
        }
Пример #7
0
        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>(__事务, __负载));
        }
Пример #8
0
 public override void 处理接收(IPEndPoint __远端, N事务 事务, object 负载, IN上下文 __报文分派)
 {
     Console.WriteLine("客户端: 收到心跳");
 }