Hallo zusammen, bin neu hier und stehe vor einen Problem mit dem
Indy UPD Client.
Vorhaben.
Ich Möchte gerne ein GameServer
Query tool für meinen Clan schreiben
doch bekomme ich Manchmal bei einer ServerAbfrage ein
Exception Connection Reset By Peer.
Frage kann man so eine
Exception im Vorhinein abfangen, so das man den Rest der Verbleibenen Server Abfragen kann ??.
Und So Schaut mein Code aus..
!!!udp. ist der TidUdpClient!!!
Delphi-Quellcode:
Procedure TForm1.RTCWReadServers(Server : TObject);
var MyServer : PServer;
Timeout,i : integer;
MyHandle : TIDSocketHandle;
Buffer : String;
begin
myServer := pServer(Server);
Timeout := 100;
MyHandle := udp.Binding;
udp.ReceiveTimeout := Timeout;
ServerRead := False;
for i := 1 to 3 do begin // Max 2 Versuche!!!
udp.Send(RTCWsQuery);
if WaitForSingleObject(myHandle.Handle,Timeout) = WAIT_TIMEOUT then begin
Inc(TimeOut,50);
udp.ReceiveTimeout := Timeout;
end;
if myHandle.Readable = True then begin
Buffer :=udp.ReceiveString;
//myServer^.ServerPB := '0';
//myServer^.ServerFF := '0';
myServer^.ServerName := TurboFilter(Buffer,'\sv_hostname\');
myServer^.ServerMap := TurboFilter(Buffer,'\mapname\');
//myServer^.ServerFF := TurboFilter(Buffer,'\g_friendlyFire\');
myServer^.ServerGMode := TurboFilter(Buffer,'\gamename\');
//myServer^.ServerPB := TurboFilter(Buffer,'\sv_punkbuster\');
ServerRead:=True;
end;
if ServerRead then exit else inc(NoResponse);
end;
end;
Vorher sage ich dem udpClient natürlich noch den Host und den Port und stell in auf Active := True
Danke schonmal im Vorraus für evtl Hilfe
Gruß