程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ POCO庫中文編程參考指南(4) Poco::Net::IPAddress

C++ POCO庫中文編程參考指南(4) Poco::Net::IPAddress

編輯:關於C++

1 Poco::Net::IPAddress

地址最大長度,IPv4 是 in_addr 的長度, IPv6 是 in6_addr 的長度

enum   
{   
    MAX_ADDRESS_LENGTH =    
#if defined(POCO_HAVE_IPv6)
        sizeof(struct in6_addr)   
#else
        sizeof(struct in_addr)   
#endif   
        /// Maximum length in bytes of a socket address.   
};

1.1 IPv4 or IPv6?

POCO 用一個枚舉類來表示:

enum Family   
    /// Possible address families for IP addresses.   
{   
    IPv4,   
    IPv6   
};

1.2 構造函數

返回一個全 0 的 IP 地址:

IPAddress();

拷貝構造函數:

IPAddress(const IPAddress& addr);

根據 IP 類型(IPv4 或 IPv6)創建一個全 0 的 IP 地址:

explicit IPAddress(Family family);

用字符串類 型的 IPv4 地址或 IPv6 地址來創建一個 IP 地址,其中 IPv4 是十進制表示的 ,IPv6 是十六進制表示的:

explicit IPAddress(const std::string& addr);

用字符串類型的 IP 地址和指定的類型(IPv4 或 IPv6)創建一個 IP 地址,其中 IPv4 是十進制表示的,IPv6 是十六進制表 示的:

IPAddress(const std::string& addr, Family family);

用原生 IP 地址 in_addr 或 in6_addr 數據結構和給定的字符 串長度,創建一個 IPAddress:

IPAddress(const void* addr, poco_socklen_t length);

用原生 IP 地址 in_addr 或 in6_addr 數據 結構和給定的字符串長度,創建一個 IPAddress,其中 scope 參數用於 IPv6, IPv4 會忽略這個參數:

IPAddress(const void* addr, poco_socklen_t length, Poco::UInt32 scope);

1.3 重載運算符

賦值運算符:

IPAddress& operator = (const IPAddress& addr);

比 較運算符

bool operator == (const IPAddress& addr) const;   
bool operator != (const IPAddress& addr) const;   
bool operator <  (const IPAddress& addr) const;   
bool operator <= (const IPAddress& addr) const;   
bool operator >  (const IPAddress& addr) const;   
bool operator >= (const IPAddress& addr) const;

1.4 常 用操作

swap:

void swap(IPAddress& address);

獲 取地址類型:

Family family() const;

IPv6 專用函數,返回 scope identifier,如果是 IPv4 則返回 0:

Poco::UInt32 scope() const;

toString,IPv4 則顯示“d.d.d.d”,IPv6 則

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();

1.5 IS 函數

1.5.1 是否是未初始 化狀態

是否是未初始化的全零狀態(wildcard):

bool isWildcard() const;

1.5.2 是否是廣播/組播/單播

是否是廣播 地址(全零),與 wildcard 的區別是 wildcard 是未經過初始化的。只有 IPv4 有廣播地址,IPv6 則返回 false。

bool isBroadcast() const;

是否是回環地址:

   對於 IPv4 是 127.0.0.1

對於 IPv6 是::1

函數原型:

bool isLoopback() const;

是否是多播:

   對於 IPv4 是224.0.0.0到 239.255.255.255范圍;

對於 IPv6 是FFxx:x:x:x:x:x:x:x的范圍:

函數原型:

bool isMulticast() const;

是否是單播:

bool isUnicast() const;

1.5.2 其他函數

bool 

isLinkLocal() const;   
bool isSiteLocal() const;
bool isIPv4Compatible() const;
bool isIPv4Mapped() const;
bool isWellKnownMC() const;
bool isNodeLocalMC() const;   
bool isLinkLocalMC() const;   
bool isSiteLocalMC() const;
bool isOrgLocalMC() const;
bool isGlobalMC() const;

1.5 protected 函數

protected:

void init(IPAddressImpl* pImpl);

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved