Dirección IP falsa de getaddrinfo y inet_ntop
-
21-09-2019 - |
Pregunta
He estado usando getaddrinfo para buscar direcciones de socket para los comandos básicos de socket. Recientemente, sin embargo, las direcciones que vuelve a mí son para las direcciones IP falsa, que he encontrado utilizando inet_ntop. He intentado mi código, así como el previsto en de Beej Guía , y ambas producen los mismos resultados. Aquí está el código:
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;
No importa cual sea la dirección que yo uso, siempre me da una IP de la forma
16.2.x.y
donde 256 * x + y es igual al número de puerto. ¿Alguien ha visto que esto suceda, o adivinar lata nadie por qué me está dando esto?
Solución
¿No deberías estar pasando
((sockaddr_in const *)info->ai_addr)->sin_addr
para inet_ntop
?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow