GameBase.Network.GamePack.ProcessNetData C# (CSharp) Method

ProcessNetData() public method

public ProcessNetData ( byte data ) : void
data byte
return void
        public void ProcessNetData(byte[] data)
        {
            // lock (this)
            //{
                byte[] dedata = new byte[data.Length];
                Buffer.BlockCopy(data, 0, dedata, 0, data.Length);
                m_Key.DecodePacket(ref dedata, data.Length);

                m_stream.Write(dedata, 0, dedata.Length);
                PackIn packin = new PackIn(m_stream.GetBuffer());
                int nCurPos = 0; //记录当前流位置
                while (true)
                {
                    int nLen = packin.ReadUInt16();
                    if (nLen > m_stream.Length - nCurPos) //封包不是完整的
                    {
                        m_stream.SetLength(0);
                        nLen = 0;
                        break;
                    }
                    if (nLen <= 0) break;
                    nCurPos += nLen;
                    //2016.1.25 non-negative number required.
                    if (nLen - sizeof(ushort) <= 0)
                    {
                        m_stream.SetLength(0);
                        nLen = 0;
                        break;
                    }
                    byte[] reData = packin.ReadBuff(nLen - sizeof(ushort));
                    m_ListData.Add(reData);
                    if (nCurPos == m_stream.Length) break;
                }
                int rema_Len = (int)m_stream.Length - nCurPos;
                if (rema_Len > 0)
                {
                    dedata = new byte[rema_Len];
                    Buffer.BlockCopy(m_stream.GetBuffer(), nCurPos, dedata, 0, rema_Len);
                }
                m_stream.SetLength(0);
                if (rema_Len > 0) m_stream.Write(dedata, 0, dedata.Length);
               // }
        }