如何在c++中表示IPv6

How to represent an IPv6 in C++?

本文关键字:表示 IPv6 c++      更新时间:2023-10-16

我想知道在c++中存储IPv6的最有效方法是什么?

基本上,我需要一种格式,提供尽可能多的灵活性,并与现有库兼容。我的第一个想法是使用一个简单的std::vector<int>,因为这将允许我轻松访问地址的每个部分。

这是一个好的解决方案吗?或者我以后会遇到麻烦吗?

这应该是好的,但你可能想做一个std::vector。我个人会使用c.

中的结构体sockaddr_in6。
/* IPv6 address */
struct in6_addr
  {
    union
      {
    uint8_t u6_addr8[16];
    uint16_t u6_addr16[8];
    uint32_t 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
  };
以下内容:

  #include <netinet/in.h>

这样你就可以使用你的地址的静态初始化,并完成它。在vector对象上重复执行push_backs操作会变得非常麻烦,而且会使其难以阅读。

您的意思是存储IPv6地址?如果是这样,int是不够的,每个需要128位。