AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IP nach Hostname

Ein Thema von DelTurbo · begonnen am 14. Mär 2019 · letzter Beitrag vom 17. Mär 2019
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: IP nach Hostname

  Alt 15. Mär 2019, 09:18
Schau bitte mal, ob Du aus diesem Quelltextfragment schlau wirst (hab' ich in 'nem alten Delphi-7-Programm gefunden):
Delphi-Quellcode:
// DNS = TIdDNSResolver
    s := 'www.delphipraxis.net'; // oder eine IP
    DNS.Host := Reg.NameServer; // Dein DNS-Server
    DNS.ClearInternalQuery;
    DNS.QueryType := [qtA]; // Liefert einen A- und einen Name-Record - hier auch mal die anderen möglichen Varianten probieren z. B. qtName
    Reg.WriteAppInfoLog(Format('DNS-Abfrage: Host = %s',[s]));
    Try
      DNS.Resolve(s);
      Reg.WriteAppInfoLog('DomainName: %s',[DNS.QueryResult.DomainName]);
      if DNS.QueryResult.Count > 0 then begin
      for i := 0 to DNS.QueryResult.Count - 1 do begin
        case DNS.QueryResult.Items[I].RecType of
          qtA: begin
                 if Trim(TARecord(DNS.QueryResult.Items[I]).IPAddress) = 'then begin
                   Reg.WriteAppInfoLog('IP: %s', [GetIPFromRData(DNS.QueryResult.Items[I].RData)]);
                 end else begin
                   Reg.WriteAppInfoLog('IP: %s',[TARecord(DNS.QueryResult.Items[I]).IPAddress]);
                 end;
              end;
          qtNS: Reg.WriteAppLog(' ' + TNSRecord(DNS.QueryResult.Items[I]).HostName);
          qtMD: Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).Name);
          qtMF: Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).Name);
          qtName: Reg.WriteAppLog(' ' + TNAMERecord(DNS.QueryResult.Items[I]).HostName);
          qtSOA: begin
                   Reg.WriteAppLog(' Primary: ' + TSOARecord(DNS.QueryResult.Items[I]).Primary);
                   Reg.WriteAppLog(' ResponsiblePerson: ' + TSOARecord(DNS.QueryResult.Items[I]).ResponsiblePerson);
                   Reg.WriteAppLog(' Serial: ' + IntToStr(TSOARecord(DNS.QueryResult.Items[I]).Serial));
                   Reg.WriteAppLog(' Refresh: ' + IntToStr(TSOARecord(DNS.QueryResult.Items[I]).Refresh));
                   Reg.WriteAppLog(' Retry: ' + IntToStr(TSOARecord(DNS.QueryResult.Items[I]).Retry));
                   Reg.WriteAppLog(' Expire: ' + IntToStr(TSOARecord(DNS.QueryResult.Items[I]).Expire));
                   Reg.WriteAppLog(' MinimumTTL: ' + IntToStr(TSOARecord(DNS.QueryResult.Items[I]).MinimumTTL));
                 end;
          qtMB: Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).Name);
          qtMG: Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).Name);
          qtMR: Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).Name);
          qtWKS: begin
                   Reg.WriteAppLog(' ' + TWKSRecord(DNS.QueryResult.Items[I]).IPAddress);
                   Reg.WriteAppLog(' ' + IntToStr(TWKSRecord(DNS.QueryResult.Items[I]).Protocol));
                 end;
          qtPTR: Reg.WriteAppLog(' ' + TPTRRecord(DNS.QueryResult.Items[I]).HostName);
          qtHINFO: begin
                     Reg.WriteAppLog(' ' + THINFORecord(DNS.QueryResult.Items[I]).CPU);
                     Reg.WriteAppLog(' ' + THINFORecord(DNS.QueryResult.Items[I]).OS);
                   end;
          qtMINFO: begin
                     Reg.WriteAppLog(' ' + TMINFORecord(DNS.QueryResult.Items[I]).ResponsiblePersonMailbox);
                     Reg.WriteAppLog(' ' + TMINFORecord(DNS.QueryResult.Items[I]).ErrorMailbox);
                   end;
          qtMX: Reg.WriteAppLog(' ' + TMXRecord(DNS.QueryResult.Items[I]).ExchangeServer+',' + IntToStr(TMXRecord(DNS.QueryResult.Items[I]).Preference));
          qtTXT: Reg.WriteAppLog(TTextRecord(DNS.QueryResult.Items[I]).Text.Text);
          else
            Reg.WriteAppLog('?:');
            Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).Name);
            Reg.WriteAppLog(' ' + TResultRecord(DNS.QueryResult.Items[I]).RData);
          end;
        end;
      end else begin
        Reg.WriteAppErrorLog('Kein Ergebnis erhalten.');
      end;
      DNS.Disconnect;
    except
      on e : Exception do begin
        Reg.WriteAppInfoLog('DNS-Abfrage: ' + e.Message);
        try
          DNS.Disconnect;
        except
        end;
      end;
    end;

...

function GetIPFromRData(RData : TIDBytes) : String;
var
  s : String;
  i : Integer;
begin
  s := BytesToString(RData);
  if Length(s) = 4 then begin
    Result := '';
    for i := 1 to Length(s) do Result := Result + IntToStr(Ord(s[i])) + '.';
    Result := Copy(Result,1,Length(Result) - 1);
  end else begin
    Result := s;
  end;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz