コード例 #1
0
ファイル: Packet.cs プロジェクト: atipls/MCPE.AlphaServer
        public static Packet Parse(byte[] data)
        {
            try {
                var type = data[0];
                switch ((PacketType)type)
                {
                case PacketType.UnconnectedPing: return(new UnconnectedPingPacket(data));

                case PacketType.OpenConnectionRequest1:
                case PacketType.OpenConnectionRequest2: return(new OpenConnectionRequestPacket(data));

                default: {
                    if ((type & RakNetPacket.IS_CONNECTED) != 0)
                    {
                        return(new RakNetPacket(data));
                    }
                    Console.WriteLine($"Unhandled packet type {type:X}.");
                    Console.WriteLine(Formatters.AsHex(data));
                    break;
                }
                }
            } catch (Exception ex) {
                Console.WriteLine($"Error while parsing a packet: {ex.Message}");
                Console.WriteLine($"StackTrace: \n{ex.StackTrace}");
                if (Debugger.IsAttached)
                {
                    throw;
                }
            }
            return(new Packet());
        }