Programowanie w języku C/C++ » FAQ

Adres IP na podstawie nazwy hosta

  • 2008-07-12 00:18
  • 2 komentarze
  • 2605 odsłon
  • Oceń ten tekst jako pierwszy
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;
}
//---------------------------------------------------------------------------

2 komentarze

mithrandir 2008-07-12 21:12

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

Dannte 2008-01-08 23:50

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.