private void GetStat() { var iphost = _ipService.GetIpAddress(Host); var server = new Arma3BEClient.Steam.Server(new IPEndPoint(IPAddress.Parse(iphost), Port)); var settings = new GetServerInfoSettings(); var rules = server.GetServerRulesSync(settings); ServerRules = rules.Select( x => new Tuple <string, string>(x.Key, x.Value)).ToList(); var serverInfoR = server.GetServerInfoSync(settings); var props = serverInfoR.GetType().GetProperties(); ServerInfo = props.Select( x => new Tuple <string, string>(x.Name, x.GetValue(serverInfoR) .ToString())).ToList(); ServerPlayers = server.GetServerChallengeSync(settings); OnPropertyChanged(nameof(ServerRules)); OnPropertyChanged(nameof(ServerInfo)); OnPropertyChanged(nameof(ServerPlayers)); }
private void CheckServer(ServerInfoDto serverInfo) { var iphost = _ipService.GetIpAddress(serverInfo.Host); var server = new Arma3BEClient.Steam.Server(new IPEndPoint(IPAddress.Parse(iphost), serverInfo.SteamPort)); var settings = new GetServerInfoSettings(); var rules = server.GetServerInfoSync(settings); if (string.Compare(rules.Environment, "w", StringComparison.Ordinal) != 0) { ShowWarning = true; } }
public ServerInfoResult GetServerInfoSync(GetServerInfoSettings settings) { var localEndPoint = new IPEndPoint(IPAddress.Any, 0); using (var client = new UdpClient(localEndPoint)) { client.Client.ReceiveTimeout = settings.ReceiveTimeout; client.Client.SendTimeout = settings.SendTimeout; client.Connect(EndPoint); var requestPacket = new List<byte>(); requestPacket.AddRange(new Byte[] { 0xFF, 0xFF, 0xFF, 0xFF }); requestPacket.Add(0x54); requestPacket.AddRange(Encoding.ASCII.GetBytes("Source Engine Query")); requestPacket.Add(0x00); var requestData = requestPacket.ToArray(); client.Send(requestData, requestData.Length); byte[] data = client.Receive(ref localEndPoint); return ServerInfoResult.Parse(data); } }
public ServerInfoResult GetServerInfoSync(GetServerInfoSettings settings) { var localEndPoint = new IPEndPoint(IPAddress.Any, 0); using (var client = new UdpClient(localEndPoint)) { client.Client.ReceiveTimeout = settings.ReceiveTimeout; client.Client.SendTimeout = settings.SendTimeout; client.Connect(EndPoint); var requestPacket = new List <byte>(); requestPacket.AddRange(new Byte[] { 0xFF, 0xFF, 0xFF, 0xFF }); requestPacket.Add(0x54); requestPacket.AddRange(Encoding.ASCII.GetBytes("Source Engine Query")); requestPacket.Add(0x00); var requestData = requestPacket.ToArray(); client.Send(requestData, requestData.Length); byte[] data = client.Receive(ref localEndPoint); return(ServerInfoResult.Parse(data)); } }
public ServerRulesResult GetServerRulesSync(GetServerInfoSettings settings) { var localEndpoint = new IPEndPoint(IPAddress.Any, 0); using (var client = new UdpClient(localEndpoint)) { client.Client.ReceiveTimeout = settings.ReceiveTimeout; client.Client.SendTimeout = settings.SendTimeout; client.Connect(EndPoint); var requestPacket = new List<byte>(); requestPacket.AddRange(new Byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0x56}); requestPacket.AddRange(BitConverter.GetBytes(-1)); client.Send(requestPacket.ToArray(), requestPacket.ToArray().Length); byte[] responseData = client.Receive(ref localEndpoint); requestPacket.Clear(); requestPacket.AddRange(new Byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x56 }); requestPacket.AddRange(responseData.Skip(5).Take(4)); client.Send(requestPacket.ToArray(), requestPacket.ToArray().Length); responseData = client.Receive(ref localEndpoint); return ServerRulesResult.Parse(responseData); } }
public ServerRulesResult GetServerRulesSync(GetServerInfoSettings settings) { var localEndpoint = new IPEndPoint(IPAddress.Any, 0); using (var client = new UdpClient(localEndpoint)) { client.Client.ReceiveTimeout = settings.ReceiveTimeout; client.Client.SendTimeout = settings.SendTimeout; client.Connect(EndPoint); var requestPacket = new List <byte>(); requestPacket.AddRange(new Byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x56 }); requestPacket.AddRange(BitConverter.GetBytes(-1)); client.Send(requestPacket.ToArray(), requestPacket.ToArray().Length); byte[] responseData = client.Receive(ref localEndpoint); requestPacket.Clear(); requestPacket.AddRange(new Byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x56 }); requestPacket.AddRange(responseData.Skip(5).Take(4)); client.Send(requestPacket.ToArray(), requestPacket.ToArray().Length); responseData = client.Receive(ref localEndpoint); return(ServerRulesResult.Parse(responseData)); } }