![]() |
IPv4-Adresse auf Gültigkeit prüfen
himitsu stellt
![]()
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; |
Re: IP-Adresse auf Gültigkeit prüfen
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... :angel2: Liebe Grüße, Valle |
Re: IP-Adresse auf Gültigkeit prüfen
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? |
Re: IP-Adresse auf Gültigkeit prüfen
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 |
Re: IP-Adresse auf Gültigkeit prüfen
Zitat:
|
Re: IP-Adresse auf Gültigkeit prüfen
Zitat:
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 |
Re: IP-Adresse auf Gültigkeit prüfen
Zitat:
Die Sachen kommen immer schnell in die Vorschlagssparte und dann dauert es Jahre :D 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. |
Re: IP-Adresse auf Gültigkeit prüfen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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