如何在C中扩展IPv6地址

时间:2011-12-06 06:02:10

标签: c

我想扩展我的IPv6地址。有没有办法将该地址扩展为完整地址? 如果我得到abcd:12 :: 7那么我需要将它扩展为abcd:0012:0000:0000:0000:0000:0000:0007 主要用于递增地址。

我已经编写了一些代码但显示错误。错误是 - “致命错误C1083:无法打开包含文件:'arpa / inet.h':没有这样的文件或目录”。我正在使用visual studio 2005. / p>

1 个答案:

答案 0 :(得分:1)

对于任何类型的IPv6地址操作,您需要将其存储为4个无符号整数(每个4字节)的数组。大多数堆栈存储它有点像这样,这是来自linux内核:

 struct in6_addr {
         union {
                 __u8            u6_addr8[16];
                 __be16          u6_addr16[8];
                 __be32          u6_addr32[4];
         } in6_u;
 #define s6_addr                 in6_u.u6_addr8
 #define s6_addr16               in6_u.u6_addr16
 #define s6_addr32               in6_u.u6_addr32
 };

您需要使用inet_pton()将字符串转换为此压缩格式。