1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| AnsiString TForm1::AfficheIP(void)
{
struct sockaddr_in sin;
struct hostent * phe;
char FAR buffer[64] ;
// Initialisation du service WSA
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
return "Impossible de trouver winsock.dll";
}
// Récupération du nom de la machine
gethostname(buffer, sizeof(buffer));
// Récupération de la liste d'ips associées à la machine
phe = gethostbyname(buffer);
if(phe==NULL)
{
return "Erreur : pointeur nul";
// WSACleanup();
}
// Enumération des adresses
int I = 0 ;
while((phe->h_addr_list[I+1])!=NULL)
{
I++;
}
memcpy(&sin.sin_addr.s_addr, phe->h_addr_list[I], phe->h_length);
AnsiString IP = buffer;
IP =IP + "/";
IP =IP + inet_ntoa(sin.sin_addr) ;
return IP ;
//WSACleanup();
} |
Partager