ReadBuff() public méthode

public ReadBuff ( int len ) : byte[]
len int
Résultat byte[]
Exemple #1
0
        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);
            }
            // }
        }
Exemple #2
0
        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);
               // }
        }
Exemple #3
0
        public static void Run()
        {
            lock (_lock_session)
            {
                foreach (GameSession session in m_DicSession.Values)
                {
                    byte[] retData = session.m_GamePack.GetData();
                    if (retData != null)
                    {
                        PackIn packin = new PackIn(retData);
                        ushort tag = packin.ReadUInt16();
                        switch (tag)
                        {
                            case PacketProtoco.C_LOGINGAME:
                                {
                                    packin.ReadUInt32();

                                    int _key = 0, _key2 = 0;
                                    GenerateKey.GenerateKey_(ref _key, ref _key2);
                                    //取封包帐号- 发给dbserver
                                    byte[] bAccount = packin.ReadBuff(16);

                                    String account = Coding.GetDefauleCoding().GetString(bAccount);
                                    GameBase.Network.Internal.QueryRole query = new GameBase.Network.Internal.QueryRole(session.gameid, _key, _key2, bAccount);
                                    mTcpClient.SendData(query.GetBuffer());

                                    Log.Instance().WriteLog("帐号登录!" + account);
                                    break;
                                }
                        }
                    }
                }
            }
        }
Exemple #4
0
        public override void Create(byte[] msg = null, GamePacketKeyEx key = null)
        {
            base.Create(msg, key);
            if (msg != null)
            {
                PackIn inpack = new PackIn(msg);
                inpack.ReadUInt16();
                Name = inpack.ReadBuff(16);
                version = inpack.ReadInt32();
            }

        }