Sto cercando di capire il funzionamento della funzione gethostbyname() per implementare in un programmino client la risoluzione dell'indirizzo del server attraverso il suo nome. L'esempio che ho è questo:
Quando poi vado a costruire l'indirizzo a cui connettermi, dovrei utilizzare la variabile "ul" così?
sad.sin_family = AF_INET; // sad è la struttura sockaddr_in
sad.sin_port = htons (porta); // porta è un numero di porta
sad.sin_addr.s_addr = inet_addr (ul); //inet_addr qui dovrebbe ricevere l'indirizzo "ul" sopra ricavato
Grazie per le delucidazioni.
Codice:
const char * name = "localhost";
struct hostent *host;
host = gethostbyname(name);
if (host == NULL) {
fprintf(stderr, "gethostbyname() failed.\n");
return 0;
} else {
unsigned long ul = *((unsigned long *)host->h_addr_list[0]);
fprintf(stdout, "Risultato di gethostbyname(%s): %lu\n",name, ul);
struct in_addr NewAddr;
NewAddr.s_addr=ul;
printf("Indirizzo nella forma corretta: %s \n", inet_ntoa(NewAddr));
}
Quando poi vado a costruire l'indirizzo a cui connettermi, dovrei utilizzare la variabile "ul" così?
sad.sin_family = AF_INET; // sad è la struttura sockaddr_in
sad.sin_port = htons (porta); // porta è un numero di porta
sad.sin_addr.s_addr = inet_addr (ul); //inet_addr qui dovrebbe ricevere l'indirizzo "ul" sopra ricavato
Grazie per le delucidazioni.