Le lundi 12 septembre, malet jean-luc alias cityhunter a écrit :
> >>struct sockaddr_in my_addr;
> >>struct hostent * peer;
> >>
> >>peer = gethostbyname(destination);
> >
> > my_addr.sin_addr.s_addr = *((in_addr_t*)(peer->h_addr_list[0]));
> >
> >(sans le « struct »). Ou mieux, puisque la doc (man 7 ip) dit que
> >my_addr.sin_addr.s_addr est de type u_int32_t,
> >
> > my_addr.sin_addr.s_addr = *((u_int32_t*)(peer->h_addr_list[0]));
> [..]
> pour le u_int32_t ce n'est pas une bonne idée car cela limite la
> portabilité (bien que j'en aie rien à faire....)
D'un autre côté je n'ai vu préciser nulle part que
my_addr.sin_addr.s_addr est de type in_addr_t. Pour le coup je
préférerais écrire
my_addr.sin_addr = *((struct in_addr*)(peer->h_addr_list[0]));
car pour le coup ce type est précisé au moins dans le man de Linux et
dans celui de Darwin :
http://www.hmug.org/man/4/inet.php
> quelqu'un sait si gethostbyname fonctionne aussi avec de l'IPv6?
Le man prétend que oui. Jamais essayé.
Edgar -- lecteur assidu des pages de manuel ;-) .