Exemplo n.º 1
0
        private void ParsingBytes()
        {
            ///将本次要接收的消息头字节数置0
            int iBytesHead = 0;
            ///将本次要剪切的字节数置0
            int iBytesBody = 0;

            try
            {
                if (isHead)
                {
                    ///如果当前需要接收的字节数小于缓存池RecvBuffList,进行下一步操作
                    if (surHL <= RecvBuffList.Count)
                    {
                        iBytesHead = surHL;
                        surHL      = 0;
                    }
                    if (surHL == 0)
                    {
                        isHead = false;
                        isBody = true;
                        ///接收消息体(消息体的长度存储在消息头的0至4索引位置的字节里)
                        byte[] HeadBytes = new byte[iBytesHead];
                        ///将接收到的字节数的消息头保存到HeadBytes,//减去已经接收到的字节数
                        CutTo(RecvBuffList, HeadBytes, 0, iBytesHead);
                        int msgLength = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(HeadBytes, 0));
                        surBL = msgLength;
                    }
                }
                if (isBody)
                {
                    ///如果当前需要接收的字节数大于0,则循环接收
                    if (surBL <= RecvBuffList.Count)
                    {
                        iBytesBody = surBL;
                        surBL      = 0;               ///归零进入下一步操作
                    }
                    if (surBL == 0)
                    {
                        isBody = false;
                        isHead = true;
                        surHL  = 4;
                        ///一个消息包接收完毕,解析消息包
                        byte[] BodyBytes = new byte[iBytesBody];
                        CutTo(RecvBuffList, BodyBytes, 0, iBytesBody);
                        ///一个消息包接收完毕,解析消息包
                        string mvcString = Encoding.UTF8.GetString(BodyBytes, 0, BodyBytes.Length);
                        Console.WriteLine(TmTimerTool.CurrentTime() + " Recv {0} Bytes. ThreadId:{1}", BodyBytes.Length, Thread.CurrentThread.ManagedThreadId);
                        TmParameter parameter = TmJson.ToObject <TmParameter>(mvcString);
                        ///这个方法用来处理参数Mvc,并让结果给客户端响应(当客户端发起请求时调用)
                        OnTransferParameter(this, parameter);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(TmTimerTool.CurrentTime() + ex.ToString());
                Dispose();
            }
        }
Exemplo n.º 2
0
 public override void OnSendMvcParameters()
 {
     try
     {
         while (SendParameters.Count > 0)
         {
             TmParameter mvc = SendParameters.Dequeue();
             ///用Json将参数(MvcParameter),序列化转换成字符串(string)
             string mvcJsons = TmJson.ToString <TmParameter>(mvc);
             if (TClient != null)
             {
                 TClient.SendString(mvcJsons);
             }
             //else
             //{
             //    if (IsRunning)
             //    {
             //        IsRunning = false;
             //        StartConnect();
             //        Console.WriteLine(TmTimerTool.CurrentTime() + " TClient is Null. new TClient() 重新连接。");
             //    }
             //}
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(TmTimerTool.CurrentTime() + " SendMvcParameters: " + ex.Message);
     }
 }
Exemplo n.º 3
0
 public override void OnSendMvcParameters()
 {
     try
     {
         while (SendParameters.Count > 0)
         {
             TmParameter mvc = SendParameters.Dequeue();
             while (mvc.Keys.Count > 0)
             {
                 TmTcpSession tpeer;
                 TPeers.TryGetValue(mvc.Keys[0], out tpeer);
                 ///用Json将参数(MvcParameter),序列化转换成字符串(string)
                 string mvcJsons = TmJson.ToString <TmParameter>(mvc);
                 if (tpeer != null)
                 {
                     tpeer.SendString(mvcJsons);
                 }
                 else
                 {
                     Console.WriteLine(TmTimerTool.CurrentTime() + " 没找TPeer,用Key: " + mvc.Keys[0]);
                     break;
                 }
                 mvc.Keys.Remove(mvc.Keys[0]);
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(TmTimerTool.CurrentTime() + " OnSendMvcParameters: " + ex.Message);
     }
 }
Exemplo n.º 4
0
        public static TmParameter ToJsonParameter <T>(TenCode ten, ElevenCode eleven, string key, T value)
        {
            TmParameter parameter = new TmParameter();
            string      json      = TmJson.ToString <T>(value);

            parameter.TenCode    = ten;
            parameter.ElevenCode = eleven;
            parameter.Parameters.Add(key, json);
            return(parameter);
        }
Exemplo n.º 5
0
        public static void AddJsonParameter <T>(TmParameter parameter, string key, T value)
        {
            object obj;
            bool   yes = parameter.Parameters.TryGetValue(key, out obj);

            if (yes)
            {
                parameter.Parameters.Remove(key);
            }
            string json = TmJson.ToString <T>(value);

            parameter.Parameters.Add(key, json);
        }