【发布时间】:2011-06-28 19:36:12
【问题描述】:
我需要一些方法来遍历两个 IPv6 地址之间的地址范围。即如果第一个IP是2a03:6300:1:103:219:5bff:fe31:13e1,第二个IP是2a03:6300:1:103:219:5bff:fe31:13f4,我想访问该范围内的19个地址。
对于 IPv4,我只需使用 inet_aton 来表示字符串,并在结果结构中获得 s_addr 中的 htonl,但是对于 IPv6,我该如何做到这一点?
为了简化:
struct in6_addr sn,en;
long i;
s="2a03:6300:1:103:219:5bff:fe31:13e1";
e="2a03:6300:1:103:219:5bff:fe31:13f4";
inet_pton(AF_INET6,s,&sn);
inet_pton(AF_INET6,e,&en);
[..]
for (i = _first_ipv6_representation; i<=_second_ipv6_representation; i++){
/* stuck here */
}
【问题讨论】:
-
您的问题中有两个问题,它们看起来不相关,我无法准确理解您想要做什么。
-
只有一个问题:如何在 2 个 ipv6 地址之间进行“for”循环迭代?
-
您想将
s和e都存储在可以循环的东西中吗?还是要比较两个地址? -
@sixlettervariables: 是的,我想将
s和e存储在我可以循环的东西中 -
只是好奇你用这个做什么。此循环可能会运行 长时间,具体取决于输入。 ;-)