Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Subnetzmaske zu einer lokalen IP auslesen (https://www.delphipraxis.net/82174-subnetzmaske-zu-einer-lokalen-ip-auslesen.html)

little_budda 8. Dez 2006 02:23


Subnetzmaske zu einer lokalen IP auslesen
 
Hallo,

ich habe hier über das Forum Code bekommen um die IPs meiner Netzwerkkarten auszulesen.

Delphi-Quellcode:
function GetLocalIPs(const Lines:TStrings):Boolean;
type
  PPInAddr= ^PInAddr;
var
  wsaData: TWSAData;
  HostInfo: PHostEnt;
  HostName: Array[0..255] of Char;
  Addr: PPInAddr;
begin
  Result:=False;
  Lines.Clear;
  if WSAStartup($0102, wsaData)=0 then
  try
    if gethostname(HostName, SizeOf(HostName)) = 0 then Begin
       HostInfo:= gethostbyname(HostName);
       if HostInfo<>nil then Begin
          Addr:=Pointer(HostInfo^.h_addr_list);
          if (Addr<>nil) AND (Addr^<>nil) then
             Repeat
                    Lines.Add(StrPas(inet_ntoa(Addr^^)));
                    inc(Addr);
             Until Addr^=nil;
       end;
    end;
    Result:=True;
  finally
    WSACleanup;
  end;
end;
Der Code ist klasse.
Die IPs werden hiermit alle korrekt ausgelesen wenn die entsprechende Netzwerkkarte aktiv ist.
(Wenn sie einen Link hat)

Ich suche nun eine Variante um die Subnetzmaske der IP auszulesen
damit ich den erreichbaren Adressbereich der jeweiligen IP berechnen kann.

Ich habe mich dazu mit den Beispielen aus dem Forum zu "GetAdaptersInfo" beschäftigt.
Die Beispiele liefern zwar alle gewünschten Informationen, aber der Code ist sehr mächtig.
Da ich gerne Code einsetze den ich auch verstehen kann,
hatte ich gehofft hier eine Version zu finden die etwas einfacher ist.

Gruß Holger.

1ceman 14. Dez 2006 16:37

Re: Subnetzmaske zu einer lokalen IP auslesen
 
Du brauchst sie net auslesen. du kannst anhand der IP sehen welche subnetzmaske verwendet wird.
Wenn der erste "Zahl" der IP-Adresse im Bereich 0-127 liegt dann ist die subnetzmaske 255.0.0.0
im Bereich 128-191 ist sie 255.255.0.0
und im bereich 192-255 ist sie 255.255.255.0

pacman1986 14. Dez 2006 16:39

Re: Subnetzmaske zu einer lokalen IP auslesen
 
nicht direkt iceman

das sind die stani subnetmasken für a b c netze mann kann die aber auch ändern ^^.

Light 14. Dez 2006 16:45

Re: Subnetzmaske zu einer lokalen IP auslesen
 
[OT=Leicht]
Is des nich sogar so das an der Stelle von der Subnetmaske die Stelle scih irgendwie auf die Ip bezeiht
. also ich weiß nich wie ich das schreiben soll ...
Also halt das z.B.: die Null an letzter stelle dafür steht das diese Netzwerkkarte alle addressen dieses bereichs erkennen kann?
und wenn man z.B. 0.0.0.0 machen würde dann hätte man den gesammten bereich? allso alle möglichkeiten?
(diese überlgung würde sich deken wenn du mit ideser Info den Addressbereichbestimmen könntes oder?)

Leuchtend eGRüße
Stefan
alias Light
[/OT]

Klaus01 14. Dez 2006 18:09

Re: Subnetzmaske zu einer lokalen IP auslesen
 
Vielleicht hilft Dir das etwas weiter: -> msdn Link

Und hier findest Du die obige Lösung in Delphi umgesetzt.

Grüße
Klaus


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