我现在将遗留应用程序现代化,该应用程序将IPv4地址存储在固定大小的无符号长整数中。地址以主机字节顺序存储。也就是说,来自套接字API时为ntohl()
,并且在转到套接字API时为htonl()
' d。
现在为了支持IPv6,我想知道如何处理这个数组。
我是否应该存储字符串表示形式,并使其成为char[INET6_ADDRSTRLEN]
或甚至std::vector<std::string>
或std::set<std::string>
的数组,以支持更多地址。
或者,我可以存储in6_addr
结构,这可能比使用std::string
更有效,但是我想知道网络和主机字节顺序如何应用于此?
答案 0 :(得分:0)
in6_addr确实要求地址按网络字节顺序排列。 in6_addr内部存储ipv6地址作为16个字符,8个短路,4个整数的并集。