//public void OnResponse_Parser(MemoryStream stream, uint msgId) //{ // Parser.Responser_Parser(msgId, stream, DateTime.Now, 0); // stream.Position = 0; //} public override void Recv(MemoryStream stream) { int offset = 0; int pos = 0; byte[] buffer = stream.GetBuffer(); while (stream.Length > sizeof(UInt16)) { UInt16 size = BitConverter.ToUInt16(buffer, offset); offset += sizeof(UInt16); if (size > stream.Length - offset) { break; } Packet packet = packetHandler.Unpack(buffer, size, ref offset); lock (m_msgQueue) { m_msgQueue.Enqueue(packet); } offset = (size + offset); pos = offset; } stream.Seek(pos, SeekOrigin.Begin); }