C/C++ FAQ

Adres IP na podstawie nazwy hosta

Krecik

No właśnie... Poniżej jest funkcja zwracająca adres IP komputera na podstawie podanej jako parametr nazwy hosta.

#include <winsock2>
 
AnsiString GetIP(String nam)
{
WSADATA data;
HOSTENT *pH;
in_addr addr;
AnsiString IP = "";
if(WSAStartup(MAKEWORD(1,1), &data)) return "";
pH = gethostbyname(nam.c_str());
if(pH)
{
if(pH->h_addr)
{
memcpy (&addr, pH->h_addr,pH->h_length);
IP = AnsiString(inet_ntoa(addr));
}
}
else
IP="?.?.?.?"; //jeżeli nie uda się połączyć [zdarza się, że w listingu sieci (i w Otoczeniu Sieciowym w Win) pozostaje jeszcze nazwa komputera, mimo że jest on już wyłączony...
WSACleanup();
return IP;
}
//---------------------------------------------------------------------------
FAQ

2 komentarzy

W UNIX`sie struct hostent gethostbyname(char hostname) znajduje się w pliku nagłówkowym netdb.h
pozdrawiam :)

Dzięki za program.
Chciałbym tylko dodać od siebie, że ip lokalne (127.0.0.1) to "localhost", a aby pobrać ip swojego komputera należy wpisać pustego Stringa ""

Pozdrawiam.