Question

Je l'ai utilisé pour getaddrinfo la recherche d'adresses de socket pour les commandes de prise de base. Récemment, cependant, les adresses, il me rend sont des adresses IP, fausses que j'ai trouvé à l'aide inet_ntop. J'ai essayé mon code, ainsi que celui prévu dans Beej de Guide , et ils ont tous deux les mêmes résultats. Voici le code:

struct addrinfo hints, *info;
int status;

memset(&hints, 0, sizeof hints);

hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;

if(status = getaddrinfo(address, port, &hints, &info)) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
}

char ip4[INET_ADDRSTRLEN];
inet_ntop(AF_INET, info->ai_addr, ip4, INET_ADDRSTRLEN);

std::cout<<ip4<<std::endl;

Peu importe quelle adresse je l'utilise, il me donne toujours une adresse IP de la forme

16.2.x.y

256 * où x + y est égale au numéro de port. Quelqu'un at-il jamais vu cela se produire, ou peut-on deviner pourquoi il me donne cela?

Était-ce utile?

La solution

Si vous ne passerez

((sockaddr_in const *)info->ai_addr)->sin_addr

à inet_ntop?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top