Wie schon erwähnt im Titel hab ich mir einen Launcher für den Server eines Freundes zusammengebastelt. Ich versuche alle paar Minuten im Hintergrund einige generelle Informationen abzufragen. Zudem frage ich auch ab ob der Server Online ist. Dazu verwende ich UDP. Um einen Ping zu berechnen, messe ich die Zeit zwischen Anfrage und Antwort meiner UDP-Requests. Zum Code:
Code
using (UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 56800)))
{
Stopwatch.Reset();
byte[] request, response;
IPEndPoint remoteIpEndpoint = new IPEndPoint(IPAddress.Parse(host), port);
client.Client.ReceiveTimeout = (int)maxPing;
client.Connect(remoteIpEndpoint);
//Server Info //hexadecimal bit-sequence requesting general server info
request = new byte[] { 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 };
client.Send(request, request.Length);
Stopwatch.Start();
response = client.Receive(ref remoteIpEndpoint);//Hier sollte eigentlich auf die Antwort des Servers gewartet werden, jedoch läuft die Zeit immer ab und ich erhalte ein TimeOut.
Stopwatch.Stop();
this.ping = Stopwatch.ElapsedMilliseconds;
//string dataServer = Encoding.ASCII.GetString(response).Remove(0, 5);
this.ServerInfo = ServerInfo.Parse(response);
}
Alles anzeigen
Der Fehler besteht darin, dass ich mich mit dem Server verbinde, eine Anfrage versende, aber keine Antwort erhalte. Somit bekomme ich einen TimeOut.
Ich habe schon diverse alternativen ausprobiert und viele Stunden in die Recherche zur Fehlerlösung gesteckt. Jedoch hat mich nichts so richtig weitergebracht.
Ich freue mich auf jede Hilfe