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); } } } }