从IP获取域名

时间:2011-02-15 13:06:32

标签: c++ sockets

如何从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

我真的不知道。

3 个答案:

答案 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);