Konwersja z **char do in_addr - Pobieranie IP lokalnego

0

Mam problem z konwersja z **char do in_addr.
Poniżej kawałek kodu i miejsce błędu - proszę o pomoc.

PHostEnt Host;
 char *CompName;
 Word VER;
 TWSAData *Data;
 char *IP_Local;
 String IP_External;
 String ACompName;
 
 Data = new TWSAData[1000];
 IP_Local = new char[1000];
 CompName = new char[1000];
 
// Ładujemy bibliotekę Winsock
 VER = MAKEWORD(1,0);
 WSAStartup(VER,Data);
 
 //Pobieramy nazwę komputera i przypisujemy ja zmiennej "CompName" 
 gethostname(CompName,1000);
 Host = gethostbyname(CompName) ;
 
 ACompName = Host->h_name;
 
// Pobieramy adres IP 
 IP_Local = inet_ntoa(InAddr(Host->h_addr_list)); //<<-- tu problem z rzutowaniem HELP. 
//...................................................................................
 

Adam

0

najpierw przydzielasz pamięć do IP_Local przez new, a potem zmieniasz w ogóle wartość wskaźnika. tu masz wyciek pamięci.

h_addr_list jest tablicą c-stringów (zakończoną c-stringiem pustym NULL) — całą listą adresów, jak nazwa wskazuje.
jeśli chcesz tylko jeden adres, to masz h_name albo h_addr_list[0] (niekoniecznie oba dadzą to samo)

1 użytkowników online, w tym zalogowanych: 0, gości: 1