Einzelnen Beitrag anzeigen

Cyrus1972

Registriert seit: 21. Jul 2003
6 Beiträge
 
#1

Indy Connection Reset by Peer Abfangen

  Alt 6. Aug 2003, 00:06
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ß
--
Windows kann alles dank 32bit.
Nach 32 Bit, glaube ich auch das ich alles kann
  Mit Zitat antworten Zitat