예제 #1
0
        protected override void PumpNetwork()
        {
            NetworkServer.Update();

            Chunk packet        = null;
            uint  responseToken = 0;

            while (NetworkServer.Receive(ref packet, ref responseToken))
            {
                if (packet.Flags.HasFlag(SendFlags.Connless))
                {
                    if (Register.RegisterProcessPacket(packet, responseToken))
                    {
                        continue;
                    }

                    if (packet.DataSize >= MasterServerPackets.GetInfo.Length &&
                        packet.Data.ArrayCompare(MasterServerPackets.GetInfo, MasterServerPackets.GetInfo.Length))
                    {
                        var unpacker = new UnPacker();
                        unpacker.Reset(packet.Data, packet.DataSize, MasterServerPackets.GetInfo.Length);
                        var serverBrowserToken = unpacker.GetInt();

                        if (unpacker.Error)
                        {
                            continue;
                        }

                        var packer = new Packer();
                        GenerateServerInfo(packer, serverBrowserToken);

                        var response = new Chunk()
                        {
                            ClientId = -1,
                            EndPoint = packet.EndPoint,
                            Flags    = SendFlags.Connless,
                            Data     = packer.Data(),
                            DataSize = packer.Size(),
                        };

                        NetworkServer.Send(response, responseToken);
                    }
                }
                else
                {
                    ProcessClientPacket(packet);
                }
            }

            // TODO Econ.Update();
            NetworkBan.Update();
        }
예제 #2
0
파일: Program.cs 프로젝트: Matodor/TeeSharp
        private static void SendGetInfo()
        {
            var packer = new Packer();

            packer.Reset();
            packer.AddRaw(MasterServerPackets.GetInfo);
            packer.AddInt(RNG.Int());

            var packet = new Chunk();

            packet.EndPoint = new IPEndPoint(IPAddress.Broadcast, 8303);
            packet.ClientId = -1;
            packet.Flags    = SendFlags.Connless;
            packet.DataSize = packer.Size();
            packet.Data     = packer.Data();

            _networkClient.Send(packet);
        }