![]() |
Funktion - Check, ob IP in Subnet ist - Gibt da was?
Moin zusammen,
ich habe von einem DHCP Server alle Subnetze ermittelt. Dagegen habe ich eine Menge Clients (Windows Computer) mit IP Adresse. Gibt es eine einfache Möglichkeit zu überprüfen, ob eine IP Adresse in einen Subnetz ist?
Code:
Bei A, B und C Netzen ist das ja relativ einfach indem man den Hostanteil der IP Adresse abschneidet.
IP : 192.168.29.29 Subnetz : 192.168.29.0 Ergebnis : Ja
IP : 192.168.29.29 Subnetz : 192.168.10.0 Ergebnis : Nein Im Beispiel wären das die ersten 3 Oktette für ein C Netz. Was ist aber mit Nicht-Standard Subnetzmasken? :-( Gruß Sven |
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
IP, Subnetz und Subnetzmaske nach DWORD (UInt32 bzw. LongWord) wandeln (mit funktion inet_addr() )
Delphi-Quellcode:
if (IP and Subnetzmaske) = Subnetz then
ShowMessage('IP befindet sich im Subnetz'); |
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Sorry für die doofe Frage und dann?
|
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Deine Angaben sind unvollständig. Zu einer IP gehört eigentlich immer eine Subnetzmaske und zu einem Subnetz immer eine Größenangabe.
Hast du wenigstens eins von beiden, kannst du aus der Netzgröße eine Subnetzmaske ableiten und dann prüfen, ob der Teil übereinstimmt. Streng genommen hieße das dann aber folgendes:
Delphi-Quellcode:
if (IP and Subnetzmaske) = (Subnetz and Subnetzmaske) then
|
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Von welchen "Nicht-Standard" Subnetzmasken reden wir hier eigentlich?
|
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Zitat:
Delphi-Quellcode:
Das finde ich aber frustrierend einfach. Meine TIPValidator Klasse brauchte damals gute 100 Codezeilen. :wink:
if (IP and Subnetzmaske) = (Subnetz and Subnetzmaske) then
|
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Ok, leider stehe ich immer noch auf dem Schlauch.
Wie kann denn eine IP Adresse mit Subnetzmaske zusammen als DWORD zum Beispiel gleich einem Subnetz mit Subnetzmaske sein. Die Werte sind doch immer ungleich. Sorry, da fehlt mir das Verständnis. Gibt es irgendwo ein Beispiel? Um IP Adresse bzw. Subnetz mit der Subnetzmaske zu verbinden, werden einfach die DWORDS addiert oder wie verbinde ich die Daten? DANKE für eure Mithilfe mir das Thema näher zu bringen. Sven |
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Ich glaube ich habe es jetzt.
Habe mir nochmal in Ruhe die oberen Beiträge angesehen. Ich werde mal IP, Subnetz und Maske als DWORD umwandeln und dann mit
Delphi-Quellcode:
vergleichen.
if (IP and Subnetzmaske) = (Subnetz and Subnetzmaske) then
Wenn es klappt, melde ich mich wieder mit einem Beispiel für all diejenigen, die das Thema auch erst gerade angefangen haben. |
AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
Am Ende ist es ja nur "binäre Mathematik".
Delphi-Quellcode:
Der Vergleich funktioniert Oktettweise genause wie mit der ganzen IP.
Subnetz1 := IPAdresse AND SubnetMask;
Subnetz2 := AndereIPAdrese AND SubnetMask; BeideIPsImGleichenSubnet := (Subnet1=Subnet2); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz