我编写了以下代码并期望它返回 google.com 的地址。但是,它最后返回一个空字符串。我需要修复什么才能使其正常工作? getnameinfo() 给出的错误代码为 -6
#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <iostream>
int main(int argc, char* argv[]) {
const char* presentation_addr = "2001:4860:4860::8888";
// create a socket structure
struct in6_addr in6;
int retval = inet_pton(AF_INET6, presentation_addr, &in6);
sockaddr_in6 in6_sa;
in6_sa.sin6_addr = in6;
in6_sa.sin6_family = AF_INET6;
sockaddr *sa = (struct sockaddr* )&in6_sa;
char buf[NI_MAXHOST];
retval = getnameinfo(sa, sizeof(sa), buf, sizeof(buf), NULL, 0, NI_NAMEREQD);
if (retval) {
std::cout << "getnameinfo() errored with code " << retval << std::endl;
}
std::cout << buf << std::endl;
return 0;
}
我用 getnameinfo 重写了这部分,它成功了
retval = getnameinfo((struct sockaddr*)&in6_sa, sizeof(in6_sa), buf, sizeof(buf), NULL, 0, NI_NAMEREQD);