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(); }
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); }