IPAddress 類提供了 IPv4 和 IPv6 地址的統一表示,支持地址解析、分類判斷、掩碼操作及字符串轉換。
enum Family { IPv4, IPv6 }; // 地址族枚舉
enum {
MAX_ADDRESS_LENGTH =
#if defined(POCO_HAVE_IPv6)
sizeof(struct in6_addr)
#else
sizeof(struct in_addr)
#endif
};
IPAddress():全零地址(wildcard)。IPAddress(const IPAddress& addr):拷貝構造。explicit IPAddress(Family family):指定族的全零地址。explicit IPAddress(const std::string& addr):從字符串解析(IPv4 十進制,IPv6 十六進制)。IPAddress(const std::string& addr, Family family):指定族解析字符串。IPAddress(const void* addr, poco_socklen_t length):從原生 in_addr/in6_addr 構造。IPAddress(const void* addr, poco_socklen_t length, Poco::UInt32 scope):帶 scope ID 的 IPv6 構造。operator ===, !=, <, <=, >, >=(基於二進制大小)。void swap(IPAddress& address)Family family() const:獲取地址族。Poco::UInt32 scope() const:IPv6 scope ID,IPv4 返回 0。std::string toString() const:轉為標準字符串表示。poco_socklen_t length() const、const void* addr() const、int af() const:底層訪問。void mask(const IPAddress& mask)、void mask(const IPAddress& mask, const IPAddress& set):應用網絡掩碼。static IPAddress parse(const std::string& addr):解析字符串,失敗拋異常。static bool tryParse(const std::string& addr, IPAddress& result):嘗試解析,不拋異常。static IPAddress wildcard(Family family = IPv4):獲取通配地址。static IPAddress broadcast():獲取 IPv4 廣播地址(255.255.255.255)。bool isWildcard() const:是否為全零未初始化狀態。bool isBroadcast() const:IPv4 廣播地址。bool isLoopback() const:回環地址(127.0.0.1 / ::1)。bool isMulticast() const:多播地址(IPv4: 224.0.0.0~239.255.255.255, IPv6: FFxx::/8)。bool isUnicast() const:單播地址。isLinkLocal()、isSiteLocal()、isIPv4Compatible()、isIPv4Mapped()isWellKnownMC()、isNodeLocalMC()、isLinkLocalMC()、isSiteLocalMC()、isOrgLocalMC()、isGlobalMC():各類多播範圍判斷。void init(IPAddressImpl* pImpl);
來自柳大的 CSDN 博客:Blog.CSDN.net/Poechant