Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Überprüfen ob ein String wirklich ein Hostname ist (https://www.delphipraxis.net/76099-ueberpruefen-ob-ein-string-wirklich-ein-hostname-ist.html)

ringli 29. Aug 2006 23:00


Überprüfen ob ein String wirklich ein Hostname ist
 
Ich habe hier im Forum eine Funktion gefunden um zu überprüfen ob ein String eine IP-Adresse ist. Jetzt habe ich versucht eine Funktion zu erstellen die überprüft ob ein String ein Hostname ist.

Hier mal der Quellcode für die beiden Funktionen. Die Funktion IsValidIP habe ich wie bereits erwähnt so hier im Forum gefunden, während ich die Funktion IsValidHostname aus einer Funktion zur Ermittlung der IP aus einem gegebenen Hostnamen (auch hier aus dem Forum) und der bereits genannten Funktion IsValidIP zusammengebastelt habe.

Funktioniert inzwischen auch soweit, aber ich frage mich ob es nicht doch wesentlich einfacher geht. :gruebel:

Delphi-Quellcode:
// Ist der angegebene String wirklich eine IP-Adresse?
function IsValidIP (const IPAdress : String) : Boolean;
begin
  Result := ((IPAdress <> '') and (Inet_Addr(PChar(IPAdress)) <> INADDR_NONE));
end;

// Ist der angegebene String wirklich ein Hostname?
function IsValidHostname(const Hostname : String) : Boolean;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
  IP: PChar;
begin
  Result := False;
  if WSAStartUp($101, WSAData) = 0 then
    begin
      GetMem(IP, 255 + 1);
      StrPCopy(IP, Hostname);
      HostEnt := GetHostByName(IP);
      FreeMem(IP);
      if HostEnt <> nil then
        begin
          if IsValidIP(Hostname) then
            begin
              Result := False;
            end
          else
            begin
              Result := True;
            end;
        end
      else
        begin
          Result := False;
        end;
    end;
  WSACleanUp;
end;

Jelly 29. Aug 2006 23:06

Re: Überprüfen ob ein String wirklich ein Hostname ist
 
Du könntest den Host auch sicherlich versuchen, anzupingen. Aber nicht jeder Host lässt sich anpingen (Firewall) und nicht alles was angepingt werden kann, ist ein Host (Netzwerkdrucker) :???:

Meflin 30. Aug 2006 13:25

Re: Überprüfen ob ein String wirklich ein Hostname ist
 
Nachdem es für Hostnamen so gut wie keine Beschränkungen gibt was die Namensgebung betrifft wird sich da kaum eine andere Möglichkeit finden lassen als dessen IP zu ermitteln. Allerdings kannst du dann dir die Abfrage IsValidIp doch sparen - wenn du den Hostnamen auflöst und diese IP rausbekommst, dann stimmt die auf alle Fälle ;)


ringli 30. Aug 2006 19:14

Re: Überprüfen ob ein String wirklich ein Hostname ist
 
Danke für eure Antworten. Hatte ja schon fast befürchtet das es da keine bessere Lösung gibt. Also werde ich einfach die Überprüfung auf einen gültigen Hostnamen weglassen und nur auf eine gültige IP prüfen.

Trotzdem nochmal Danke! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 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