首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

POCO 庫中 IPAddress 類詳解:IP 地址解析、判斷與操作

     編輯:關於C++

Poco::Net::IPAddress:跨平台 IP 地址封裝

IPAddress 類提供了 IPv4 和 IPv6 地址的統一表示,支持地址解析、分類判斷、掩碼操作及字符串轉換。

1. 常量與枚舉

enum Family { IPv4, IPv6 };  // 地址族枚舉
enum {
    MAX_ADDRESS_LENGTH = 
#if defined(POCO_HAVE_IPv6)
    sizeof(struct in6_addr)
#else
    sizeof(struct in_addr)
#endif
};

2. 構造函數

  • 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 構造。

3. 重載運算符

  • 賦值:operator =
  • 比較:==, !=, <, <=, >, >=(基於二進制大小)。

4. 常用操作

  • 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)。

5. IS 判斷函數

5.1 狀態判斷

  • bool isWildcard() const:是否為全零未初始化狀態。

5.2 地址類型判斷

  • 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:單播地址。

5.3 IPv6 專用判斷

  • isLinkLocal()、isSiteLocal()、isIPv4Compatible()、isIPv4Mapped()
  • isWellKnownMC()、isNodeLocalMC()、isLinkLocalMC()、isSiteLocalMC()、isOrgLocalMC()、isGlobalMC():各類多播範圍判斷。

6. 受保護方法

void init(IPAddressImpl* pImpl);

來自柳大的 CSDN 博客:Blog.CSDN.net/Poechant

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved