void QueryServer( object data ) { string Server; int Port; Server = textBox1.Text; Port = Convert.ToInt32( textBox2.Text ); UdpClient c = new UdpClient( ); c.Connect( Server, Port ); byte[ ] bytes = { 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x53, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x45, 0x6E, 0x67, 0x69, 0x6E, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x00 }; c.Send( bytes, bytes.Length ); IPEndPoint ip = new IPEndPoint( IPAddress.Any, 0 ); byte[ ] recv = c.Receive( ref ip ); string recvStr = Encoding.ASCII.GetString( recv ).Remove( 0, 6 ); string[ ] tmp = recvStr.Split( '\0' ); int len = 0; for ( int i = 0; i < 6; i++ ) { len += tmp[ i ].Length; } len += 6; string hostname = tmp[ 0 ]; string map = tmp[ 1 ]; string game = tmp[ 3 ]; string players = recv[ len ].ToString( ); string maxplayers = recv[ len + 1 ].ToString( ); c.Close( ); MessageBox.Show( hostname + " " + map + " " + game + " " + players + " " + maxplayers ); }