Пример #1
0
        /// <summary>
        /// 处理接收到的数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns>是否成功</returns>
        private bool ProcessByte(ReciveData data)
        {
            try
            {
                //将收到的数据存在缓冲区
                byte[] temp = new byte[data.Actual];
                Array.Copy(data.Buffer, 0, temp, 0, temp.Length);
                data.UserToken.DataList.AddRange(temp);

                //数据超过Tcp自定义头部长度
                if (data.UserToken.DataList.Count > NetWorkBase.TcpHeadLength && data.UserToken.DataList.Count >= data.UserToken.CurrentPackageLength)
                {
                    //创建信息容器
                    List <ReciveData> list = new List <ReciveData>();
                    //处理完成后 不管连接是否失效 那信息都是有效的
                    DecodeData(list, data.UserToken);
                    if (list.Count > 0)
                    {
                        foreach (var item in list)
                        {
                            //加入队列
                            MCQ.Enqueue(item);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                data.UserToken.Reset("处理接收到的数据:" + e.Message);
                return(false);
            }
            return(true);
        }