Endereço IP falso da Getaddrinfo & Inet_ntop
-
21-09-2019 - |
Pergunta
Eu tenho usado getaddrinfo para procurar endereços de soquete para comandos de soquete básico. Recentemente, porém, os endereços que ele retorna para mim são para endereços IP falsos, que eu encontrei usando o INET_NTOP. Eu tentei meu código, assim como o fornecido em Guia de Beej, e ambos produzem os mesmos resultados. Aqui está o 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;
Não importa o endereço que eu use, sempre me dá um IP do formulário
16.2.x.y
onde 256*x + y é igual ao número da porta. Alguém já viu isso acontecer, ou alguém pode adivinhar por que está me dando isso?
Solução
Você não deveria estar passando
((sockaddr_in const *)info->ai_addr)->sin_addr
para inet_ntop
?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow