AGB  ·  Datenschutz  ·  Impressum  







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

IPv4-Adresse auf Gültigkeit prüfen

Ein Thema von fkerber · begonnen am 10. Jan 2010 · letzter Beitrag vom 10. Jan 2010
Antwort Antwort
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

IPv4-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 11:37
himitsu stellt hier eine Funktion vor, mit der man eine IPv4-Adresse auf Gültigkeit überprüfen kann. Diese wurde von alzaimar leicht korrigiert und optimiert.

Delphi-Quellcode:
//Array als Lookup-Tabelle für gültige Ziffern.
var
  IsDigit : Array [Char] Of Boolean;

//Hilfsfunktion
//Muss einmal vor Aufruf von isIP aufgerufen werden, um eine LookUp-Tabelle zu erstellen.
procedure InitIsDigit;
var
  C : char;
begin
  For C:= #0 to #255 do IsDigit[C] := C in ['0'..'9'];
end;
Delphi-Quellcode:
function isIpv4(const aIpString: string): Boolean;
var
  pIpString: PChar;
  OctetSum, Octet, OctetLength, OctetCount: Integer;

begin
  Result := False;
  pIpString := PChar(aIpString);
  OctetCount := 0;
  OctetSum := 0;
  while pIpString^ <> #0 do
  begin
    Inc(OctetCount);
    Octet := 0;
    OctetLength := 0;
    while IsDigit[pIpString^] do
    begin
      Octet := Octet * 10 + (Ord(pIpString^) - Ord('0'));
      Inc(OctetLength);
      Inc(pIpString);
    end;
    inc(OctetSum, Octet);
    if (OctetLength = 0) or (Octet > 255) then
      Exit;
    if OctetCount = 4 then
      Break;
    if pIpString^ <> '.then
      Exit;
    Inc(pIpString);
  end;
  Result := (OctetSum > 0) and (OctetCount = 4) and (pIpString^ = #0);
end;
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 11:54
Das ist aber nicht sehr IPv6 freundlich! Also ich würde auf jeden Fall noch dran schreiben, dass dies nur für IPv4 gilt.

Dann habe ich beim lesen des Codes noch eine Frage, bei der ich mir nicht sicher bin. Meine Delphi-Zeiten habe ich bereits einige Jahre hinter mir. Der Code in der Zeile 23 prüft doch, ob sich eine der Zahlen aus den 4 Zahlengruppen einer IPv4 gleich 0 oder größer 255 ist? Wenn das so ist, dann ist das falsch. Eine IP kann auch eine 0 haben. Nur nicht am Anfang und am Ende der IP. Das sind dann besondere IPs. Edit:// Okay, hier habe ich mich vertan. Es wurde ja OctetLength auf 0 geprüft, das macht natürlich Sinn.

Auch ist zu berücksichtigen, dass die Funktion wirklich nur auf eine gültige Notation prüft. Hier sind immernoch Kombinationen möglich, die nicht immer sinnvoll sind. Die Broadcast-Adresse "255.255.255.255" ist zum Beispiel keine IP, die man in manchen Szenarien sinnvoll einsetzen könnte.

Hoffe ich hab hier nicht alles in Delphi misinterpretiert...

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.053 Beiträge
 
Delphi 12 Athens
 
#3

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 12:11
bei IPv6 konnten auch Zahlen weggelassen werden, aber ich hab noch nirgends gesehn, daß man dieses auchbei IPv4 darf?

PS:
@ überschneller fkerber: vielleicht hätte man besser nur den anderen Thread hier herverschoben, um keine doppelte Diskussion einzuführen?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 12:46
Hi!

Stimmt, dass es nur für IPv4 ist, werde ich noch ergänzen.

@himitsu:
Ich hatte ehrlich gesagt nicht damit gerechnet, dass da noch mehr nachkommt.
Aber ich werde beide Threads im Auge halten und das dann mergen, wenn in dem anderen Ruhe eingekehrt ist.


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.053 Beiträge
 
Delphi 12 Athens
 
#5

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 12:51
Zitat von fkerber:
Ich hatte ehrlich gesagt nicht damit gerechnet, dass da noch mehr nachkommt.
einmal wartest du mehrere Jahre und nun wolltest du das wohl aufholen und hast 'ne ganze Minute gewartet
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 12:54
Zitat von himitsu:
bei IPv6 konnten auch Zahlen weggelassen werden, aber ich hab noch nirgends gesehn, daß man dieses auchbei IPv4 darf?
Kann man auch nicht - das meinte ich aber auch nicht.

Ich meinte vorallem, dass bereits aus dem Namen der Funktion ersichtlich sein sollte, dass diese Funktion IPs nur auf gültige IPv4-IPs prüft. Und ich denke mittlerweile ist es längst Zeit geworden, bereits auf IPv6-Kompatibilität umzustellen. Ich würde euch gerne die Funktion für v6 basteln, aber in Delphi sieht die Sache schlecht aus.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 13:02
Zitat von himitsu:
Zitat von fkerber:
Ich hatte ehrlich gesagt nicht damit gerechnet, dass da noch mehr nachkommt.
einmal wartest du mehrere Jahre und nun wolltest du das wohl aufholen und hast 'ne ganze Minute gewartet
Nein, nein - so ist das ja nicht.
Die Sachen kommen immer schnell in die Vorschlagssparte und dann dauert es Jahre
Scherz beiseite, wir bemühen uns, die ganzen Sachen so bald als möglich aufzuarbeiten und demnach auch keine neuen Sachen ewig auf die lange Bank zu schieben.
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.053 Beiträge
 
Delphi 12 Athens
 
#8

Re: IP-Adresse auf Gültigkeit prüfen

  Alt 10. Jan 2010, 13:04
Zitat von Valle:
Ich würde euch gerne die Funktion für v6 basteln, aber in Delphi sieht die Sache schlecht aus.
kannst es auch gern in 'ner anderen Sprache machen und wir versuchen es dann zu übersetzen
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 18:51 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