Potresti utilizzare la funzione gethostbyname, il prototipo della funzione è il seguente:
struct hostent {
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
};
struct hostent *gethostbyname(const char *name);
Alla funzione devi passare una stringa contente un indirizzo ip o il nome di un host (per esempio
http://www.google.i), questa capirà da sola se si tratta di un ip o di un nome e nel caso di un nome tenterà di tradurlo in indirizzo ip. Se la funzione viene eseguita senza errori (scritto ip nella forma corretta o riesce a tradurre il nome in ip) ritorna un puntatore alla struttura
hostent altrimenti NULL. La struttura
hostent contiene alcune informazioni sul computer col l'indirizzo ip passato per parametro (o tradotto dal nome), il campo
h_addr_list contiene la lista degli indirizzi ip del computer. Questi ultimi sono scritti nella stessa forma nella quale vanno inseriti nella struttura
sockaddr_in, quindi ti basta copiarli nella struttura è sei aposto.
Un ultima cosa c'è una piccola differenza tra la versione di linux e quella della microsoft di questa funzione. Su un sistema microsoft quando la struttura
hostent ritornata non ti serve più la devi deallocare con free(), su linux no. In ogni caso ti consiglio di controllare nella documentazione del tuo compilatore.
Ciao.