IP-Adresse des Rechners bestimmen
Dienstag, 10. September 2002 18:16
// Funktion GetHostIPAddresses schreibt die IP-Adressen des Rechners als
// Strings im Format xxx.xxx.xxx.xxx in die übergebene TStrings-Instanz.
// Die Funktion gibt die Anzahl der gefundenen IP-Adressen zurück.
// Um nur die Anzahl der IP-Adressen zu ermitteln, kann der Funktion
// im Parameter pslStrings ein NULL-Zeiger übergeben werden.
//
// Aufrufbeispiele:
//
// /* schreiben aller Rechner-IPs in eine ListBox: */
// GetHostIPAdresses(ListBox1-Items)
//
// /* schreiben aller Rechner-IPs in die TStringList pslStrings: */
// GetHostIPAdresses(pslStrings);
int GetHostIPAddresses(TStrings* pslStrings)
{
if(pslStrings) pslStrings -> Clear();
WSAData stData;
char caHostName[255];
hostent* pstHostEntry = NULL;
in_addr stInetAddress;
int ilRetVal = 0;
// Winsock initialisieren:
if(WSAStartup(0x0101, &stData) == 0)
{
// Hostnamen bestimmen:
if(gethostname(caHostName, 255)) return 0;
// Hostinformationen abrufen:
pstHostEntry = gethostbyname(caHostName);
if(pstHostEntry == NULL) return 0;
// IP-Adressen bestimmen:
for(int ilAddrIndex=0; pstHostEntry->h_addr_list[ilAddrIndex]; ilAddrIndex++)
{
stInetAddress.S_un.S_addr =
*((DWORD*)pstHostEntry->h_addr_list[ilAddrIndex]);
if(pslStrings != NULL)
pslStrings -> Add(inet_ntoa(stInetAddress));
ilRetVal++;
}
}
else return 0;
WSACleanup();
return ilRetVal;
}
// Strings im Format xxx.xxx.xxx.xxx in die übergebene TStrings-Instanz.
// Die Funktion gibt die Anzahl der gefundenen IP-Adressen zurück.
// Um nur die Anzahl der IP-Adressen zu ermitteln, kann der Funktion
// im Parameter pslStrings ein NULL-Zeiger übergeben werden.
//
// Aufrufbeispiele:
//
// /* schreiben aller Rechner-IPs in eine ListBox: */
// GetHostIPAdresses(ListBox1-Items)
//
// /* schreiben aller Rechner-IPs in die TStringList pslStrings: */
// GetHostIPAdresses(pslStrings);
int GetHostIPAddresses(TStrings* pslStrings)
{
if(pslStrings) pslStrings -> Clear();
WSAData stData;
char caHostName[255];
hostent* pstHostEntry = NULL;
in_addr stInetAddress;
int ilRetVal = 0;
// Winsock initialisieren:
if(WSAStartup(0x0101, &stData) == 0)
{
// Hostnamen bestimmen:
if(gethostname(caHostName, 255)) return 0;
// Hostinformationen abrufen:
pstHostEntry = gethostbyname(caHostName);
if(pstHostEntry == NULL) return 0;
// IP-Adressen bestimmen:
for(int ilAddrIndex=0; pstHostEntry->h_addr_list[ilAddrIndex]; ilAddrIndex++)
{
stInetAddress.S_un.S_addr =
*((DWORD*)pstHostEntry->h_addr_list[ilAddrIndex]);
if(pslStrings != NULL)
pslStrings -> Add(inet_ntoa(stInetAddress));
ilRetVal++;
}
}
else return 0;
WSACleanup();
return ilRetVal;
}