public bool Process(AsyncSocketUserToken oUserToken, byte[] bytes, int offset, int count) { if (count < sizeof(int)) { return(false); // 判断包长度是否小于一个命令的长度 } int oPacketID = BitConverter.ToInt32(bytes, offset); // 获取命令ID IPacket oPacket = null; if (PacketTable.TryGetValue(oPacketID, out oPacket)) { IPacketCreate oIPacket = oPacket as IPacketCreate; IPacket oNewPacket = oIPacket.New() as IPacket; try { DynamicBuffer buffer = new DynamicBuffer(bytes, offset + sizeof(int), bytes.Length - offset - sizeof(int)); oNewPacket.Deserialization(buffer); oNewPacket.PacketID = oPacketID; oNewPacket.Owner = oUserToken; Packets.Enqueue(oNewPacket); return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } } else { return(true); } }