Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdDNSResolver Problem - Connection reset by peer (https://www.delphipraxis.net/113136-tiddnsresolver-problem-connection-reset-peer.html)

bigkahoona 3. Mai 2008 09:36


TIdDNSResolver Problem - Connection reset by peer
 
Hi Leute,

ich habe ein Problem mit TIdDNSResolver. Ich will eine Liste von Domains aus einem StringGrid prüfen:

http://gavajda.de/pics/statuscheck.jpg

Das versuche ich mit folgendem Code:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  resolvecount: Integer;
begin
  with IdDNSResolver1 do
   begin
     ClearInternalQuery;
     IdDNSResolver1.Host := dns1;                //dns1 wird über ein ini file geladen, momentan ein T-Online DNS Server
       for resolvecount := 1  to gridcount do    //gridcount ist die Anzahl der Zeilen des StringGrids
        begin
         IdDNSResolver1.Resolve(StringGrid1.Cells[1,resolvecount]);
         StringGrid1.Cells[2,resolvecount] := QueryResult.Items[resolvecount].Name;
        end;
   end;
end;
Aber alles was ich bekomme ist ein

http://gavajda.de/pics/10054error.jpg

Kann mir wer auf die Sprünge helfen was ich falsch mache? Was fehlt?

Danke im Voraus.

marabu 3. Mai 2008 13:06

Re: TIdDNSResolver Problem - Connection reset by peer
 
Hi,

bei mir funktioniert es so:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  pAddr: PCardinal;
begin
  with DNSResolver do
  begin
    Active := True;
    QueryRecords := [qtA];
    Resolve('www.delphipraxis.net');
    pAddr := @QueryResult.Items[0].RData[1];
    Active := False;
    ShowMessage(IpStr(pAddr^));
  end;
end;
Grüße vom marabu

bigkahoona 3. Mai 2008 13:35

Re: TIdDNSResolver Problem - Connection reset by peer
 
Danke für deine Antwort.
Bei mir ergibt dein Code 1:1 übernommen allerdings Fehler.
Wenn ich ihn abändere gibt das
Delphi-Quellcode:
var
  pAddr: PCardinal;
begin
  with IdDNSResolver1 do
  begin
    QueryType := [qtA];
    Resolve('www.delphipraxis.net');
    pAddr := @QueryResult.Items[0].RData[1];
    ShowMessage(IpStr(pAddr^));
  end;
end;
ergibt:
Zitat:

[DCC Fehler] Unit2.pas(69): E2003 Undefinierter Bezeichner: 'IpStr'
Und wenn ich IpStr als String deklariere kriege ich ein
Zitat:

[DCC Fehler] Unit2.pas(70): E2066 Operator oder Semikolon fehlt
:?: :gruebel:

marabu 3. Mai 2008 16:58

Re: TIdDNSResolver Problem - Connection reset by peer
 
Probiere es mal damit:

Delphi-Quellcode:
function IpStr(ip: Cardinal): string;
var
  a: LongRec absolute ip;
begin
  with a do
    Result := Format('%d.%d.%d.%d', [Bytes[0], Bytes[1], Bytes[2], Bytes[3]]);
end;

bigkahoona 4. Mai 2008 07:33

Re: TIdDNSResolver Problem - Connection reset by peer
 
Naja, irgendwie hat es ja schon am Anfang mehr oder weniger funktioniert "rauszufunken". Die Exception ist ja "Connection reset by peer" und auch F-Secure meldet, dass meine Anwendung eine Verbindung ins Internet aufbauen will. Die Änderungen die du vorschlägst sind aber clientseitige Formatierungsänderungen. Das wird mein "Connection reset by peer"-Problem aber nicht lösen, glaube ich. :(

marabu 4. Mai 2008 08:17

Re: TIdDNSResolver Problem - Connection reset by peer
 
Glauben heißt nicht zu wissen.

An deinem Code kann ich nichts verbessern, weil er unvollständig ist. Also habe ich dir ein Beispiel gegeben, welches "funktioniert". Meistens bemühe ich mich zwischen den Zeilen zu lesen. Dein Opener und auch deine Versuche die fehlende Funktion IpStr() durch eine String-Variable zu ersetzen, zeichnen ein für mich klares Bild deiner Delphi-Kenntnisse und auch mit DNS stehst du wohl nicht auf du und du. Hast du denn mein Code-Beispiel überhaupt mal ausprobiert? Was funktioniert denn nicht?

Freundliche Grüße

bigkahoona 4. Mai 2008 20:02

Re: TIdDNSResolver Problem - Connection reset by peer
 
Bitte entschuldige meine Unwissenheit. Wie du siehst ist dies mein achter Beitrag und ich habe auch keinen Hehl daraus gemacht, dass ich ein n00b bin. Ich habe nur höflich um einen Denkanstoss gebeten. Deinen Vorschlag habe ich umzusetzen versucht mit dem Ergebnis, dass ich Fehlermeldungen bei der Kompilierung hatte. Ich hab doch garnicht gesagt "Den Scheiß kannste behalten, schreib mir gefälligst funktionierenden fertigen Code!". Ich habe nur gesagt, dass das bei mir so nicht funktioniert. Ich habe das Netz hoch und runter abgesucht. Leider ist das eher schlecht dokumentiert. Ich such dann mal weiter. Danke trotzdem vielmals.

PS: Falls jemand weiß wo ich mehr Informationen dazu erhalte hilft mir auch ein Link dorthin.

marabu 4. Mai 2008 22:13

Re: TIdDNSResolver Problem - Connection reset by peer
 
Unwissenheit ist keine Schande, da sitzen wir alle im selben Boot.

Mit der von mir nachgelieferten Funktion IPStr() müsstest du meinen Beispiel-Code eigentlich zum Laufen bringen.

Wo hakt es denn noch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz