Пример #1
0
        public override void ReceivePacket()
        {
            MemoryStream ms = new MemoryStream(Packet.Data);
            VarInt       vi = new VarInt(ms);

            ProtocolVersion = VarintBitConverter.ToInt32(vi.VarIntData);
            vi.SetValue(ms);
        }
Пример #2
0
        public void ReadPacket(Stream s)
        {
            int slen = 0;

            byte[] rdata;

            VarInt viPacketLength = new VarInt(s);

            PacketLength = VarintBitConverter.ToInt32(viPacketLength.VarIntData);

            VarInt viPacketID;

            if (Compression == false)
            {
                viPacketID = new VarInt(s);
                PacketId   = VarintBitConverter.ToInt32(viPacketID.VarIntData);

                DataLength = PacketLength - viPacketID.Length;
                Data       = new byte[DataLength];


                if (s.Read(Data, 0, DataLength) == DataLength)
                {
                    DataRead = true;
                }
                else
                {
                    DataRead = false;
                }
            }
            else
            {
                VarInt viDataLength = new VarInt(s);
                DataLength = VarintBitConverter.ToInt32(viDataLength.VarIntData);


                if (DataLength == 0)
                {
                    //No compression
                    viPacketID = new VarInt(s);
                    PacketId   = VarintBitConverter.ToInt32(viPacketID.VarIntData);
                    DataLength = PacketLength - viDataLength.Length - viPacketID.Length;
                    Data       = new byte[DataLength];

                    if (s.Read(Data, 0, DataLength) == DataLength)
                    {
                        DataRead = true;
                    }
                    else
                    {
                        DataRead = false;
                    }
                }
                else
                {
                    Data  = new byte[DataLength];
                    slen  = PacketLength - viDataLength.Length;
                    rdata = new byte[slen];

                    if (s.Read(rdata, 0, slen) == slen)
                    {
                        DataRead = true;
                    }
                    else
                    {
                        DataRead = false;
                    }

                    if (DataRead == true)
                    {
                        MemoryStream ms;

                        ms = new MemoryStream(rdata);
                        InflaterInputStream zlib = new InflaterInputStream(ms);

                        if (zlib.Read(Data, 0, DataLength) == DataLength)
                        {
                            DataRead = true;
                        }
                        else
                        {
                            DataRead = false;
                        }

                        zlib.Close();

                        ms = new MemoryStream(Data);

                        viPacketID = new VarInt(ms);
                        PacketId   = VarintBitConverter.ToInt32(viPacketID.VarIntData);

                        slen = DataLength - viPacketID.Length;


                        if (ms.Read(Data, 0, slen) == slen)
                        {
                            DataRead = true;
                        }
                        else
                        {
                            DataRead = false;
                        }

                        ms.Close();
                    }
                }
            }
        }
Пример #3
0
 public void SetValue(UInt64 value)
 {
     VarIntData = VarintBitConverter.GetVarintBytes(value);
 }
Пример #4
0
        public void SendPacket(Stream s)
        {
            Data = VarintBitConverter.GetVarintBytes(KeepAlive);

            WritePacket(s);
        }