C++ Builder Snippets  

Netzwerkadapter-Konfiguration (Name, IP, MAC, SubnetMask) mit Hilfe von Windows SNMP-Funktionen bestimmen:
 
Folgendes Projekt demonstriert, wie mit Hilfe von Windows SNMP-Funktionen (SNMP=Simple Network Management Protocol) die Informationen über die im System installierte Netzwerkadapter (Netzwerkkarten, Dial-Up Adapter, Loopback-Adapter) ausgelesen werden können. Zum Auslesen der Adapterinformationen wird im Beispielprojekt Klasse MibII von Stas Khirman verwendet (s. Dateien MibAccess.cpp und MibAccess.h).

Eine sehr gute und verständliche Beschreibung der Vorgenhensweise zum Auslesen der MIB-Informationen der Netzwerkadapter von Stas Khirman und Raz Galili finden Sie hier: In the search for the self or how to find out your IP address and other stuff in Win95 and WinNT.

Da die Klasse nur WinAPI- bzw. Standard-C Funktionen verwendet, kann Sie ohne jegliche Änderungen in Borland C++ Builder verwendet werden.

Die Anwendung der Klasse ist sehr einfach. Die Klasse besitzt nur drei 'public'-Methoden:
int   Init();
UINT  GetNICCount(BOOL bDialup, BOOL bLoopback);
void  GetNICInfo(tSTRUCTNICINFO *pNICInfo);
Nach dem Instanziieren der Klasse wird die Funktion Init() aufgerufen. Diese lädt INETMIB1.DLL und WINSOCK.DLL und führt die Initialisierung der Member-Variablen durch:
MibII MibInst;
MibInst.Init();
Nun kann die Anzahl der Adapter mit Hilfe der GetNICCount() ermittelt werden, Speicher für die tSTRUCTNICINFO-Strukturen mit den Adapter-Infos reserviert und mit GetNICInfo() gefüllt werden:
// Anzahl der Netzwerk-Adapter bestimmen:
int ilNicCount = MibInst.GetNICCount(false, false);
// Speicher reservieren und die Strukturen mit den Adapter-Infos füllen:
if(ilNicCount > 0)
{
  tSTRUCTNICINFO* pNicInfo = new tSTRUCTNICINFO[ilNicCount];
  MibInst.GetNICInfo(pNicInfo);
  for(int ilAdapter = 0; ilAdapter < ilNicCount; ilAdapter++)
    ComboBox1->Items->Add(AnsiString((char*)pNicInfo[ilAdapter].Description));
  delete [] pNicInfo;
}
Nachdem die Strukturen gefüllt wurden, kann die IP-Adresse, Subnet Mask, MAC etc. zu jedem Netzwerkadapter aus den tSTRUCTNICINFO's ausgelesen werden (siehe auch Beispielprojekt).
typedef struct
{
        long                type;
        BYTE                MACLength;
        BYTE                MAC[14];
        BYTE                IP[4];
        BYTE                SubnetMask[4];
        BYTE                Description[64];
} tSTRUCTNICINFO;



Screenshot des Beispielprogramms

Screenshot des Beispielprogramms


  Download BCB5
Projekt-Quellcode
Download
Demo-Exe

© '99-2001 by S. Kreutzmann