Indirizzo IP Bogus da getaddrinfo & inet_ntop
-
21-09-2019 - |
Domanda
Ho usato getaddrinfo per la ricerca di indirizzi socket per i comandi di base socket. Recentemente, però, gli indirizzi si torna a me sono per gli indirizzi IP fasulli, che ho trovato usando inet_ntop. Ho provato il mio codice, così come quello previsto nella Beej di guida , ed entrambi producono gli stessi risultati. Ecco il codice:
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;
Non importa quale sia l'indirizzo che uso, mi dà sempre un IP della forma
16.2.x.y
256 * dove x + y è uguale al numero di porta. Qualcuno ha mai visto questo accada, o chiunque può indovinare perché mi sta dando questa?
Soluzione
Non dovresti essere passando
((sockaddr_in const *)info->ai_addr)->sin_addr
per inet_ntop
?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow