AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Überprüfen ob ein String wirklich ein Hostname ist
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob ein String wirklich ein Hostname ist

Ein Thema von ringli · begonnen am 30. Aug 2006 · letzter Beitrag vom 30. Aug 2006
Antwort Antwort
ringli

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

Überprüfen ob ein String wirklich ein Hostname ist

  Alt 30. Aug 2006, 00: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
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Überprüfen ob ein String wirklich ein Hostname ist

  Alt 30. Aug 2006, 00:06
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)
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Überprüfen ob ein String wirklich ein Hostname ist

  Alt 30. Aug 2006, 14:25
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

  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Überprüfen ob ein String wirklich ein Hostname ist

  Alt 30. Aug 2006, 20:14
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!
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:37 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