Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Funktion - Check, ob IP in Subnet ist - Gibt da was? (https://www.delphipraxis.net/182906-funktion-check-ob-ip-subnet-ist-gibt-da.html)

Piro 25. Nov 2014 21:47

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:
IP : 192.168.29.29  Subnetz : 192.168.29.0 Ergebnis : Ja
IP : 192.168.29.29  Subnetz : 192.168.10.0 Ergebnis : Nein
Bei A, B und C Netzen ist das ja relativ einfach indem man den Hostanteil der IP Adresse abschneidet.
Im Beispiel wären das die ersten 3 Oktette für ein C Netz.

Was ist aber mit Nicht-Standard Subnetzmasken? :-(

Gruß Sven

sx2008 25. Nov 2014 22:03

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');

Piro 25. Nov 2014 22:22

AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
 
Sorry für die doofe Frage und dann?

jfheins 25. Nov 2014 22:56

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

ExceptionOverflow 26. Nov 2014 08:11

AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
 
Von welchen "Nicht-Standard" Subnetzmasken reden wir hier eigentlich?

jensw_2000 26. Nov 2014 08:20

AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
 
Zitat:

Zitat von ExceptionOverflow (Beitrag 1281100)
Von welchen "Nicht-Standard" Subnetzmasken reden wir hier eigentlich?

Er meinte sicher alle Subneting oder Superneting Masken, also Subnetzmasken die nicht 8,16 oder 24 bit sind (bei denen etwas anderes als 255 oder 0 vorkommt).


Delphi-Quellcode:
if (IP and Subnetzmaske) = (Subnetz and Subnetzmaske) then
Das finde ich aber frustrierend einfach. Meine TIPValidator Klasse brauchte damals gute 100 Codezeilen. :wink:

Piro 26. Nov 2014 16:44

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

Piro 26. Nov 2014 16:48

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:
if (IP and Subnetzmaske) = (Subnetz and Subnetzmaske) then
vergleichen.

Wenn es klappt, melde ich mich wieder mit einem Beispiel für all diejenigen, die das Thema auch erst gerade angefangen haben.

jensw_2000 26. Nov 2014 17:26

AW: Funktion - Check, ob IP in Subnet ist - Gibt da was?
 
Am Ende ist es ja nur "binäre Mathematik".
Delphi-Quellcode:
Subnetz1 := IPAdresse AND SubnetMask;
Subnetz2 := AndereIPAdrese AND SubnetMask;

BeideIPsImGleichenSubnet := (Subnet1=Subnet2);
Der Vergleich funktioniert Oktettweise genause wie mit der ganzen IP.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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