我正在做一个C/C++网络项目,它应该能够同时使用IPv4和IPv6网络堆栈。该项目只能在Linux上运行。因此,我试图找到一种有效的方法来存储IP地址并区分协议族。第一种方法是建立一个联盟:
struct ip_addr {
uint8_t fam; // socket family type
union {
struct in_addr ipv4_sin_addr;
struct in6_addr ipv6_sin_addr;
} addr;
};
The second approach was to define a `typedef std