C++ Builder Snippets  

IP-Adressen des Rechners bestimmen:
//---------------------------------------------------------------------------
// 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;
}



© '99-2001 by S. Kreutzmann