如何从IP地址获取域名。可能吗?我必须使用哪些功能?
enter code herestruct sockaddr_in saGNI;
char hostname[NI_MAXHOST];
char servInfo[NI_MAXSERV];
u_short port = 443;
saGNI.sin_family = AF_INET;
saGNI.sin_addr.s_addr = inet_addr("74.125.87.9");
saGNI.sin_port = htons(443);
// Call getnameinfo
int ok = getnameinfo((struct sockaddr *) &saGNI,
sizeof (struct sockaddr),
hostname,
NI_MAXHOST, servInfo, NI_MAXSERV, 0);
return hostname;
ok = 0,主机名= 74.125.87.9
我真的不知道。
答案 0 :(得分:0)
您可以使用GetHostByAddr()(已弃用)或较新的GetNameInfo()。它们适用于IPv4和IPv6。
答案 1 :(得分:0)
我认为这是不可能的,因为多个域/子域可以指向相同的IP地址。
例如,在我的网站上,我有一个专用的IP,但是我使用与该IP相同的服务器来托管多个网站以及子域名,所以如果你试图获取域名,它将如何知道要返回哪个域?
如果我错了,请纠正我。
答案 2 :(得分:-1)
您可以使用以下link - 内部的一些有用信息。他们使用
int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,
char *restrict node, socklen_t nodelen, char *restrict service,
socklen_t servicelen, int flags);