Ejemplo n.º 1
0
        public int Send(MessageType type, string text)
        {
            try
            {
                int res = FAIRED;
                switch (type)
                {
                case MessageType.msg:
                case MessageType.reStart:
                case MessageType.disConnect:
                case MessageType.arrived:
                case MessageType.move:
                case MessageType.none:
                    List <byte> list = new List <byte>();
                    list.Add((byte)type);
                    list.AddRange(Encoding.UTF8.GetBytes(text));
                    _client.Send(list.ToArray());
                    return(SUCCESS);

                case MessageType.AgvFile:
                case MessageType.mapFile:
                    res = SendFile(text, (byte)type);
                    return(SUCCESS);

                default:
                    OnMessageEvent("错误的消息类型");
                    return(FAIRED);
                }
            }
            catch (Exception ex)
            {
                OnMessageEvent("发送失败:" + ex);
                return(FAIRED);
            }
        }
Ejemplo n.º 2
0
        public void Send(string cmdText)
        {
            var cmdbytes = new GetDataCommand(cmdText).GetCommandBytes();

            if (Client != null)
            {
                Client.Send(cmdbytes);
            }
        }
Ejemplo n.º 3
0
        public void Send(byte[] data)
        {
            if (!IsConnected)
            {
                throw new InvalidOperationException("The client has not connected to server.");
            }

            _client.Send(data);
        }
Ejemplo n.º 4
0
        void StartWaitSendThread(TcpSocketClient client)
        {
            //开启线程读取上次未发送的消息
            ThreadPool.QueueUserWorkItem((obj) =>
            {
                var spNumber = spClientPool.First(i => i.Socket == client).SPNumber;
                //读取为发送的消息
                var deliverDao  = StorageProvider <DeliverStorage> .GetStorage();
                var deliverList = deliverDao.GetList(spNumber);

                if (deliverList.Count() > 0)
                {
                    foreach (var deliver in deliverList)
                    {
                        var d = new Deliver
                        {
                            SPNumber       = deliver.SPNumber,
                            UserNumber     = deliver.UserNumber,
                            TP_pid         = 0,
                            TP_udhi        = 0,
                            MessageCoding  = MessageCodes.GBK,
                            MessageContent = deliver.Content
                        };

                        client.Send(d.GetBytes());
                        //映射序列号
                        MapSequeue(d.SequenceNumberString, deliver.SequenceNumber);
                    }
                }

                //读取上次未发送的报告
                var reportDao  = StorageProvider <ReportStorage> .GetStorage();
                var reportList = reportDao.GetList(spNumber);

                if (reportList.Count() > 0)
                {
                    foreach (var report in reportList)
                    {
                        var r = new Report
                        {
                            SubmitSequenceNumber = report.TargetSubmitSequenceNumber,
                            ReportType           = (uint)report.ReportType,
                            State      = (uint)report.State,
                            ErrorCode  = (uint)report.ErrorCode,
                            UserNumber = report.UserNumber
                        };

                        client.Send(r.GetBytes());
                        //映射序列号
                        MapSequeue(r.SequenceNumberString, report.SubmitSequenceNumber);
                    }
                }
            });
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            TcpSocketClient client = new TcpSocketClient();

            client.PacketRecieved += (e) => {
                using (PacketReader pr = new PacketReader(e.Data)) {
                    Headers Header = (Headers)pr.ReadByte();
                    switch (Header)
                    {
                    case Headers.Login:
                        string user = pr.ReadString();
                        int    id   = pr.ReadInt32();
                        Console.Title = $"User {user} logged in ID {id} ";
                        break;

                    case Headers.Register:
                        break;

                    case Headers.Chat:
                        int    iduser = pr.ReadInt32();
                        string chat   = pr.ReadString();
                        Console.Title = $"User {iduser} said {chat} ";
                        break;

                    default:
                        break;
                    }
                }
            };
            client.Connect("127.0.0.1", 9090);
            Thread.Sleep(1000);
            Random r = new Random();

            using (PacketWriter pw = new PacketWriter()) {
                pw.Write((byte)Headers.Login);
                pw.Write("TestUser" + r.Next());
                client.Send(pw.Data);
            }
            while (true)
            {
                string input = Console.ReadLine();
                using (PacketWriter pw = new PacketWriter()) {
                    pw.Write((byte)Headers.Chat);
                    pw.Write(input);
                    client.Send(pw.Data);
                }
            }
        }
Ejemplo n.º 6
0
        void DeliverHandler(TcpSocketClient client, Deliver deliver)
        {
            var resp = new Deliver_Resp
            {
                SequenceNumber = deliver.SequenceNumber,
                Result         = CommandError.Success
            };

            client.Send(resp.GetBytes());

            //将seq设置为SMG的seq
            deliver.SequenceNumber = Sequence.Next();
            //插入手机发送的Deliver消息到数据库
            var mDeliver = new MDeliver
            {
                SequenceNumber       = deliver.SequenceNumberString,
                TargetSequenceNumber = deliver.SequenceNumber,
                SPNumber             = deliver.SPNumber,
                UserNumber           = deliver.UserNumber,
                Content = deliver.MessageContent,
                Created = DateTime.Now,
                Status  = 0
            };

            StorageProvider <DeliverStorage> .GetStorage().Insert(mDeliver);

            //转发给消息中心处理
            MessageCenter.GetInstance().Commit(deliver);
        }
Ejemplo n.º 7
0
        void StartWaitSendThread(TcpSocketClient client)
        {
            //开启线程读取上次未发送的消息
            ThreadPool.QueueUserWorkItem((obj) =>
            {
                var userNumber = mtClientPool.First(i => i.Socket == client).UserNumber;
                var dao        = StorageProvider <SubmitStorage> .GetStorage();
                var list       = dao.GetList(userNumber);

                if (list.Count() > 0)
                {
                    foreach (var submit in list)
                    {
                        var d = new Deliver
                        {
                            SPNumber       = submit.SPNumber,
                            UserNumber     = submit.UserNumber,
                            TP_pid         = 0,
                            TP_udhi        = 0,
                            MessageCoding  = MessageCodes.GBK,
                            MessageContent = submit.Content
                        };

                        client.Send(d.GetBytes());
                        //映射序列号
                        MapSequeue(d.SequenceNumberString, submit.SequenceNumber);
                    }
                }
            });
        }
Ejemplo n.º 8
0
 private void Write(string v)
 {
     if (_socket != null)
     {
         _socket.Send(System.Text.Encoding.UTF8.GetBytes(v));
     }
 }
Ejemplo n.º 9
0
 private void tcpSend(byte[] sendData)
 {
     if (_client.State == TcpSocketConnectionState.Connected)
     {
         _client.Send(sendData);//Encoding.ASCII.GetBytes(input)
     }
 }
Ejemplo n.º 10
0
        void OnConnected(TcpSocketClient client)
        {
            client.Start();

            ThreadCalls(() =>
            {
                client.Send(new Bind()
                {
                    SequenceNumber = Sequence.Next(),
                    LoginType      = LoginTypes.SPToSMG,
                    LoginName      = cbbSPNumber.Text,
                    LoginPassword  = cbbSPNumber.Text
                }.GetBytes());

                cbbSPNumber.Enabled = false;
                cbbSMGIP.Enabled    = false;
                nudSMGPort.Enabled  = false;
                btnStart.Enabled    = false;
                btnStop.Enabled     = true;
                btnSend.Enabled     = true;

                lbStatus.Text  = "已连接";
                lbAddress.Text = client.LocalIPAddress;
                this.Text      = cbbSPNumber.Text;
            });
        }
        static void SocketTest()
        {
            int             count  = 1000;
            int             port   = 11111;
            Stopwatch       watch  = new Stopwatch();
            TcpSocketServer server = new TcpSocketServer(port);

            server.HandleRecMsg = (a, b, c) =>
            {
                b.Send(c);
            };
            server.StartServer();
            watch.Start();
            LoopHelper.Loop(count, () =>
            {
                //AutoResetEvent waitEvent = new AutoResetEvent(false);
                TcpSocketClient tcpSocketClient = new TcpSocketClient(port);
                tcpSocketClient.HandleRecMsg    = (a, b) =>
                {
                    Console.WriteLine($"收到时间:{DateTime.Now.ToString("HH:mm:ss:ffffff")}");
                    //waitEvent.Set();
                };
                tcpSocketClient.StartClient();
                Console.WriteLine($"发送时间:{DateTime.Now.ToString("HH:mm:ss:ffffff")}");
                tcpSocketClient.Send(new byte[] { 0X01 });
                //waitEvent.WaitOne();
                Thread.Sleep(1000);
            });
            watch.Stop();
            Console.WriteLine($"每次耗时:{(double)watch.ElapsedMilliseconds / count}ms");
        }
Ejemplo n.º 12
0
        void SubmitHandler(TcpSocketClient client, Submit submit)
        {
            var resp = new Submit_Resp
            {
                SequenceNumber = submit.SequenceNumber,
                Result         = CommandError.Success
            };

            client.Send(resp.GetBytes());

            //添加SP发送的Submit消息到数据库
            var mSubmit = new MSubmit
            {
                TargetSequenceNumber = submit.SequenceNumber,
                SequenceNumber       = submit.SequenceNumberString,
                SPNumber             = submit.SPNumber,
                UserNumber           = submit.UserNumber,
                ReportFlag           = (int)submit.ReportFlag,
                Content = submit.MessageContent,
                Created = DateTime.Now,
                Status  = 0
            };

            StorageProvider <SubmitStorage> .GetStorage().Insert(mSubmit);

            //转发给消息中心处理
            MessageCenter.GetInstance().Commit(submit);
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            NLogLogger.Use();

            ConnectToServer();

            Console.WriteLine("TCP client has connected to server.");
            Console.WriteLine("Type something to send to server...");
            while (true)
            {
                try
                {
                    string text = Console.ReadLine();
                    if (text == "quit")
                    {
                        break;
                    }
                    else if (text == "many")
                    {
                        text = new string('x', 8192);
                        for (int i = 0; i < 1000000; i++)
                        {
                            _client.Send(Encoding.UTF8.GetBytes(text));
                        }
                    }
                    else if (text == "big")
                    {
                        text = new string('x', 1024 * 1024 * 100);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else
                    {
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            _client.Close();
            Console.WriteLine("TCP client has disconnected from server.");

            Console.ReadKey();
        }
Ejemplo n.º 14
0
        void UnBindHandler(TcpSocketClient client, UnBind ubind)
        {
            var resp = new UnBind_Resp()
            {
                SequenceNumber = ubind.SequenceNumber
            };

            client.Send(resp.GetBytes());
        }
Ejemplo n.º 15
0
        public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
        {
            try
            {
                AutoResetEvent  waitEvent    = new AutoResetEvent(false);
                ResponseModel   response     = null;
                TcpSocketClient socketClient = new TcpSocketClient(ServerIp, ServerPort)
                {
                    HandleRecMsg = (a, bytes) =>
                    {
                        response = bytes.ToString(Encoding.UTF8).ToObject <ResponseModel>();
                        waitEvent.Set();
                    },
                    RecLength       = 1024 * 1024,
                    HandleException = new Action <Exception>(ex => {
                        Console.WriteLine(ex.Message);
                    })
                };
                bool started = socketClient.StartClient();
                if (started)
                {
                    RequestModel requestModel = new RequestModel
                    {
                        ServiceName = ServiceName,
                        MethodName  = binder.Name,
                        Paramters   = args.ToList()
                    };
                    socketClient.Send(requestModel.ToJson().ToBytes(Encoding.UTF8));
                    waitEvent.WaitOne(new TimeSpan(0, 0, 5));
                    socketClient.Close();
                }
                else
                {
                    throw new Exception("连接到服务端失败!");
                }

                if (response == null)
                {
                    throw new Exception("服务器超时未响应");
                }
                else if (response.Success)
                {
                    result = response.Data.ToObject(ServiceType.GetMethod(binder.Name).ReturnType);
                    return(true);
                }
                else
                {
                    throw new Exception($"服务器异常,错误消息:{response.Msg}");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 16
0
        private void SendHeartbeat()
        {
            SocketError errorCode;

            while (true)
            {
                Thread.Sleep(heartbeatInterval);
                tcpClient.Send(heartbeatMsg.Packet, out errorCode);

                if (errorCode != SocketError.Success)
                {
                    if (Interlocked.Exchange(ref tcpSocketState, -1) != -1)
                    {
                        tcpClient.ReconnectSocket(heartbeatMsg);
                    }
                    break;
                }
            }
        }
Ejemplo n.º 17
0
        private void btnSend_Click(object sender, EventArgs e)
        {
            if (cbbSPNumber.Text == "" || rtbContent.Text == "")
            {
                return;
            }

            if (client != null)
            {
                client.Send(new Deliver
                {
                    SequenceNumber = Sequence.Next(),
                    SPNumber       = cbbSPNumber.Text,
                    MessageContent = rtbContent.Text,
                    MessageCoding  = MessageCodes.GBK,
                    UserNumber     = cbbNumber.Text,
                    TP_pid         = 0,
                    TP_udhi        = 0
                }.GetBytes());
            }
        }
Ejemplo n.º 18
0
        private void Heartbeat(object obj)
        {
            try
            {
                if (Reconnectioned >= ReconnectionCount)
                {
                    //重连熔断降级至24小时一次轮询
                    if (!downTag)
                    {
                        LogHelper.Logger.Error($"{ReconnectionCount}次重连失败,降级轮询频率至24小时一次");
                        PollingTimer.Change(24 * 60 * 60 * 1000, 24 * 60 * 60 * 1000);
                    }

                    return;
                }

                if (Client == null)
                {
                    CreateTcpClient();
                }
                if (Client.State == TcpSocketConnectionState.Connected)
                {
                    Client.Send(Encoding.UTF8.GetBytes(CommandHandler.HeartBeatCmd()));
                    Reconnectioned = 0;
                    //恢复轮询正常状态
                    downTag = true;
                    PollingTimer.Change(Polling.Value * 1000, Polling.Value * 1000);
                }
                else
                {
                    Reconnectioned++;
                }
            }
            catch (Exception ex)
            {
                LogHelper.Logger.Error($"Heartbeat Error:" + ex.Message + ex.StackTrace);
            }
        }
Ejemplo n.º 19
0
        private void btnSend_Click(object sender, EventArgs e)
        {
            if (cbbNumber.Text == "" || rtbContent.Text == "")
            {
                return;
            }

            if (client != null)
            {
                var submit = new Submit()
                {
                    SPNumber         = cbbSPNumber.Text,
                    UserCount        = 1,
                    UserNumber       = cbbNumber.Text,
                    CorpId           = "0591",
                    ExpireTime       = "",
                    ScheduleTime     = "",
                    ServiceType      = "test",
                    FeeType          = FeeTypes.SendFree,
                    FeeValue         = "000000",
                    GivenValue       = "000000",
                    MessageCoding    = MessageCodes.GBK,
                    MessageType      = 0,
                    MorelatetoMTFlag = 0,
                    TP_pid           = 0,
                    TP_udhi          = 0,
                    Priority         = 1,
                    ReportFlag       = 0,
                    MessageContent   = rtbContent.Text,
                    ChargeNumber     = cbbSPNumber.Text,
                    AgentFlag        = 1,
                };

                client.Send(submit.GetBytes());
            }
        }
Ejemplo n.º 20
0
        void BindHandler(TcpSocketClient client, Bind bind)
        {
            var resp = new Bind_Resp
            {
                SequenceNumber = bind.SequenceNumber,
                Result         = CommandError.Success
            };

            if (bind.LoginType != LoginTypes.SPToSMG)
            {
                resp.Result = CommandError.InvalidLoginType;
            }
            else
            {
                //todo auth
                if (bind.LoginName == "" || bind.LoginPassword == "")
                {
                    resp.Result = CommandError.InvalidLogin;
                }
                else if (spClientPool.Count(i => i.SPNumber.Equals(bind.LoginName)) > 0)
                {
                    resp.Result = CommandError.RepeatLogin;
                }
                else
                {
                    //添加到连接池
                    spClientPool.Add(new SPClient
                    {
                        SPNumber = bind.LoginName,
                        Socket   = client
                    });
                }
            }

            client.Send(resp.GetBytes());
        }
Ejemplo n.º 21
0
        static void Main(string[] args)
        {
            ConnectServer();

            Console.WriteLine("APM TCP client has connected to server.");
            Console.WriteLine("Type something to send to server...");

            while (true)
            {
                try
                {
                    string text = Console.ReadLine();
                    if (text == "quit")
                    {
                        break;
                    }
                    else if (text == "many")
                    {
                        text = new string('x', 8192);
                        for (int i = 0; i < 1000000; i++)
                        {
                            _client.Send(Encoding.UTF8.GetBytes(text));
                        }
                    }
                    else if (text == "big1k")
                    {
                        text = new string('x', 1024 * 1);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big10k")
                    {
                        text = new string('x', 1024 * 10);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big100k")
                    {
                        text = new string('x', 1024 * 100);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big1m")
                    {
                        text = new string('x', 1024 * 1024 * 1);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big2m")
                    {
                        text = new string('x', 1024 * 1024 * 2);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big5m")
                    {
                        text = new string('x', 1024 * 1024 * 5);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big10m")
                    {
                        text = new string('x', 1024 * 1024 * 10);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big20m")
                    {
                        text = new string('x', 1024 * 1024 * 20);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big50m")
                    {
                        text = new string('x', 1024 * 1024 * 50);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big100m")
                    {
                        text = new string('x', 1024 * 1024 * 100);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else if (text == "big1g")
                    {
                        text = new string('x', 1024 * 1024 * 1024);
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                    else
                    {
                        _client.Send(Encoding.UTF8.GetBytes(text));
                    }
                }
                catch (Exception ex) { Console.WriteLine(ex.Message); }
            }

            _client.Shutdown();
            Console.WriteLine("TCP client has disconnected from server.");

            Console.ReadKey();
        }
Ejemplo n.º 22
0
        void OnRead(TcpSocketClient client, byte[] buffers)
        {
            ThreadCalls(() =>
            {
                try
                {
                    var cmd = new BaseCommand(buffers);

                    switch (cmd.Command)
                    {
                    case Commands.Bind_Resp:
                        var bind_resp = new Bind_Resp(buffers);
                        if (bind_resp.Result != CommandError.Success)
                        {
                            PrintLog("绑定验证失败:" + CommandError.GetMessage(bind_resp.Result));
                            Thread.Sleep(1000);
                            client.Disconnect();
                        }
                        break;

                    case Commands.Deliver:
                        var deliver = new Deliver(buffers);
                        //新消息提醒
                        PrintLog("收到一条 " + deliver.UserNumber + " 发来的新消息!");
                        //绑定消息会话
                        BindSession(false, deliver.UserNumber, deliver.MessageContent);
                        //发送响应
                        client.Send(new Deliver_Resp
                        {
                            SequenceNumber = deliver.SequenceNumber,
                            Result         = CommandError.Success
                        }.GetBytes());
                        break;

                    case Commands.Deliver_Resp:
                        var deliver_resp = new Deliver_Resp(buffers);
                        if (deliver_resp.Result != CommandError.Success)
                        {
                            PrintLog("传送消息失败:" + CommandError.GetMessage(deliver_resp.Result));
                        }
                        break;

                    case Commands.Report:
                        client.Send(new Report_Resp
                        {
                            SequenceNumber = cmd.SequenceNumber,
                            Result         = CommandError.Success
                        }.GetBytes());
                        break;

                    default:
                        break;
                    }

                    PrintLog("接收一条命令:" + Commands.GetString(cmd.Command));
                }
                catch (Exception e)
                {
                    PrintLog("读取消息出现错误: " + e.Message);
                }
            });
        }
Ejemplo n.º 23
0
 public void Send(BaseTransportMessage message)
 {
     _socketClient.Send(message);
 }
Ejemplo n.º 24
0
        static void Main(string[] args)
        {
            //3C 04 0C AA 08 31 2E 33 35 32 2E 30 32 66 ED
            Console.WriteLine(DataHelper.ConvertToHexFromInt(10));
            Console.WriteLine(DataHelper.ConvertToHexFromInt(269));
            ConnectToServer();
            Console.WriteLine("TCP客户端已连接到服务器");
            Console.WriteLine("现在可以给服务器发送指令了");
            while (true)
            {
                try
                {
                    string text = Console.ReadLine();
                    if (text == "quit")
                    {
                        break;
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(text))
                        {
                            //获取温度湿度 250301FF0066已解析
                            //获取采集保存间隔250308DD0066已解析
                            //获取历史总包数历史总条数250306AA0066已解析待验证
                            //下载历史数据250306AA0201000066已解析待验证


                            //修改节点地址
                            //获取设备硬件软件版本号25080CAA0066
                            //设置设备地址25070255010B66

                            //读温度报警值上限下限25030A010066已解析
                            //读湿度报警值上限下限25030A020066已解析

                            //写温度报警值25030A01040A00DE0366
                            //写湿度报警值25030A0204C800700366
                            //读温湿度报警状态25030ABB0066

                            //读取保存间隔250308DD0066已解析
                            //设置保存间隔 写分钟   记录间隔 存储容量
                            //250308DD0305E80366
                            //设置保存间隔 写小时
                            //250308DD0401DC050066

                            //清空历史记录
                            //250309FF0066
                            //读取设备日期时间已解析
                            //250308CC0066


                            //设置时间
                            //250308BB0617071618303066
                            //开启温度报警25030AAA010166
                            //开启湿度报警25030AAA010266
                            //开启温湿度报警25030AAA010366
                            //关闭温湿度报警25030AAA010066

                            // text = "250F06AA0066";
                            text = "250401FF0066";
                        }
                        var cmdbytes = new GetDataCommand(text).GetCommandBytes();

                        _client.Send(cmdbytes);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            _client.Shutdown();
            Console.WriteLine("TCP客户端已经从服务器断开了");

            Console.ReadKey();
        }
Ejemplo n.º 25
0
        void OnRead(TcpSocketClient client, byte[] buffers)
        {
            ThreadCalls(() =>
            {
                try
                {
                    var cmd = new BaseCommand(buffers);

                    switch (cmd.Command)
                    {
                    case Commands.Bind_Resp:
                        var bind_resp = new Bind_Resp(buffers);
                        if (bind_resp.Result != CommandError.Success)
                        {
                            PrintLog("绑定验证失败:" + CommandError.GetMessage(bind_resp.Result));
                            Thread.Sleep(1000);
                            client.Disconnect();
                        }
                        break;

                    case Commands.Deliver:
                        var deliver = new Deliver(buffers);
                        //添加接收记录
                        var sms = new SMS
                        {
                            SPNumber   = deliver.SPNumber,
                            UserNumber = deliver.UserNumber,
                            Content    = deliver.MessageContent,
                            Time       = DateTime.Now,
                            Type       = SMSTypes.RECEIVE
                        };
                        SMSHistory.Add(sms);
                        //绑定会话组
                        BindGroup(deliver.SPNumber);
                        //绑定会话
                        if (lbGroup.SelectedItem != null && lbGroup.SelectedItem.ToString() == sms.SPNumber)
                        {
                            BindSession(sms);
                        }
                        else
                        {
                            lbGroup.SelectedItem = deliver.SPNumber;
                            BindSession(deliver.SPNumber);
                        }
                        //新消息提醒
                        PrintLog("收到一条 " + sms.SPNumber + " 发来的新消息!");
                        //发送响应
                        client.Send(new Deliver_Resp
                        {
                            SequenceNumber = deliver.SequenceNumber,
                            Result         = CommandError.Success
                        }.GetBytes());
                        break;

                    case Commands.Deliver_Resp:
                        var deliver_resp = new Deliver_Resp(buffers);
                        if (deliver_resp.Result != CommandError.Success)
                        {
                            PrintLog("传送消息失败:" + CommandError.GetMessage(deliver_resp.Result));
                        }
                        break;

                    default:
                        break;
                    }

                    PrintLog("接收一条命令:" + Commands.GetString(cmd.Command));
                }
                catch (Exception e)
                {
                    PrintLog("读取消息出现错误: " + e.Message);
                }
            });
        }