rtc_base IPAddress
与版本无关的 IP 地址类,包装了 in_addr 和 in6_addr 的联合。
对IP地址的封装IPAddress和InterfaceAddress,IPAddress重载了==、!=、<和>、地址支持string(std::string ToString() const;
)、sensitive_string(std::string ToSensitiveString() const;
)和uint32_t(AF_INET)(int family() const
)类型输出,还支持IPV4转IPV6类型(IPAddress AsIPv6Address() const;
)。InterfaceAddress是IPAddress的子类(class RTC_EXPORT InterfaceAddress : public IPAddress
),增加了IPv6属性(int ipv6_flags_;
)
class RTC_EXPORT IPAddress {
public:
IPAddress() : family_(AF_UNSPEC) { ::memset(&u_, 0, sizeof(u_)); }
explicit IPAddress(const in_addr& ip4) : family_(AF_INET) {
memset(&u_, 0, sizeof(u_));
u_.ip4 = ip4;
}
explicit IPAddress(const in6_addr& ip6) : family_(AF_INET6) { u_.ip6 = ip6; }
explicit IPAddress(uint32_t ip_in_host_byte_order) : f