Re: c++ problème très très bête :

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: Liste Guilde
Sujet: Re: c++ problème très très bête :
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 ;-) .