存储一组IPv6地址的最佳方法是什么?

时间:2015-01-07 11:48:55

标签: c++ data-structures ipv6 endianness

我现在将遗留应用程序现代化,该应用程序将IPv4地址存储在固定大小的无符号长整数中。地址以主机字节顺序存储。也就是说,来自套接字API时为ntohl(),并且在转到套接字API时为htonl()' d。

现在为了支持IPv6,我想知道如何处理这个数组。 我是否应该存储字符串表示形式,并使其成为char[INET6_ADDRSTRLEN]或甚至std::vector<std::string>std::set<std::string>的数组,以支持更多地址。

或者,我可以存储in6_addr结构,这可能比使用std::string更有效,但是我想知道网络和主机字节顺序如何应用于此?

1 个答案:

答案 0 :(得分:0)

in6_addr确实要求地址按网络字节顺序排列。 in6_addr内部存储ipv6地址作为16个字符,8个短路,4个整数的并集。