Ejemplo n.º 1
0
 public void OnReceive(int dataLen)
 {
     if (dataLen < 8)//前4个字节是总长度,后四个字节是协议类型
     {
         Trace.Assert(false);
     }
     else
     {
         byte[] array = this.m_procDataBuffer;
         if (dataLen > this.m_procDataBuffer.Length)
         {
             array = new byte[dataLen];               //如果长度不够,扩充字节数字
         }
         this.m_oNetwork.ReadData(array, 0, dataLen); //读从PieceBuffer中读取收到的数据
         int dwType = BitConverter.ToInt32(array, 4); //从第4个字节index开始,读取一个int值
         //Debug.Log("消息Id:" + dwType);
         CProtocol protocol = CProtocol.GetProtocol(dwType);
         if (protocol == null)
         {
             Trace.Assert(false);
             Debug.Log("没有找到消息");
         }
         else
         {
             this.m_oRecvStream.Clear();
             this.m_oRecvStream.SetBuffer(array, 8, dataLen - 8);
             //Debug.Log(dataLen);
             protocol.DeSerialize(this.m_oRecvStream);//反序列化
             protocol.Process();
             if (this.m_oObserver != null)
             {
                 this.m_oObserver.OnReceive(dwType, dataLen);
             }
         }
     }
 }