コード例 #1
0
        protected static int SearchPacketHandlers(string version, Assembly assembly)
        {
            int num = 0;

            Type[] types = assembly.GetTypes();
            for (int i = 0; i < types.Length; i++)
            {
                Type type = types[i];
                if (type.IsClass && type.GetInterface("Game.Server.Packets.Client.IPacketHandler") != null)
                {
                    PacketHandlerAttribute[] array = (PacketHandlerAttribute[])type.GetCustomAttributes(typeof(PacketHandlerAttribute), true);
                    if (array.Length > 0)
                    {
                        num++;
                        PacketProcessor.RegisterPacketHandler(array[0].Code, (IPacketHandler)Activator.CreateInstance(type));
                    }
                }
            }
            return(num);
        }
コード例 #2
0
ファイル: GameClient.cs プロジェクト: geniushuai/DDTank-3.0
 /// <summary>
 /// 收到协议包
 /// </summary>
 /// <param name="pkg"></param>
 public override void OnRecvPacket(GSPacketIn pkg)
 {
     if (m_packetProcessor == null)
     {
         m_packetLib = AbstractPacketLib.CreatePacketLibForVersion(1, this);
         m_packetProcessor = new PacketProcessor(this);
     }
     if (m_player != null)
     {
         pkg.ClientID = m_player.PlayerId;
         pkg.WriteHeader();
     }
     //LogMsg(Marshal.ToHexDump("recevie:", pkg.Buffer, 0, pkg.Length));
     m_packetProcessor.HandlePacket(pkg);
 }