我需要某种方法来迭代两个 IPv6 地址之间的地址范围。即,如果第一个 IP 是2a03:6300:1:103:219:5bff:fe31:13e1,第二个 IP 是2a03:6300:1:103:219:5bff:fe31:13f4,我想访问该范围内的 19 个地址。
对于 IPv4,我只需在结果结构中inet_aton进行字符串表示和获取htonl,s_addr但是对于 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);
Run Code Online (Sandbox Code Playgroud)
[..]
for (i = _first_ipv6_representation; i<=_second_ipv6_representation; i++){
/* stuck here */
}
Run Code Online (Sandbox Code Playgroud)