【发布时间】:2020-03-08 14:30:34
【问题描述】:
在我的项目中,我需要反转 IPv6 IP 地址以便将来进行 DNS 查找。
例子:
来自: 2001:db8:85a3:0:0:8a2e:370:7334
到: 7334:370:8a2e:0:0:85a3:db8:2001
如何用 c++ 做到这一点? 谢谢你的回答:)
PS: 对于 IPv4,我正在使用此解决方案:
int a,b,c,d;
char ip2[32];
sscanf(pageAddress, "%d.%d.%d.%d", &a, &b, &c, &d);
sprintf(ip2, "%d.%d.%d.%d", d, c, b, a);
std::cout << ip2 << "\n";
有没有更好的解决方案?
【问题讨论】:
-
这不是反向 DNS 查找所做的。为将来的 DNS 查找反向 IP 地址不是标准做法。 “反向 DNS”正在获取一个 IP 地址并找出它映射到的主机名。示例:查找 151.101.1.69 并发现它映射到 www.stackoverflow.com。 你真正想做什么?
-
我正在尝试从参数中获取一些信息,即用户传递给程序的信息(ipv4 地址、ipv6 地址、主机名)。老师告诉我,我可以反转 ip 地址并执行以下操作:5.2.0.192.in-addr.arpa。然后使用res_query函数获取信息(ptr, mx, soa, a, aaaa, ...)
-
除了@selbie 重要的评论,请注意,IPv6 地址可以用多种方式编写,因此在使用它之前,您需要将其规范化为以后操作所需的一些通用格式。请参阅 RFC5952 了解这方面的开始。
-
in-addr.arpa专用于 IPv4,不适用于 IPv6。看tools.ietf.org/html/rfc3596#section-2.5