Einzelnen Beitrag anzeigen

ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#1

Überprüfen ob ein String wirklich ein Hostname ist

  Alt 29. Aug 2006, 23:00
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.

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;
  Mit Zitat antworten Zitat