当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++ POCO库中文编程参考指南(4) Poco::Net::IPAddress

C++ POCO库中文编程参考指南(4) Poco::Net::IPAddress

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:753

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

查察全套文章:http://www.bianceng.cn/Programming/cplus/201301/35022.htm

 

    关键字:

天才代写-代写联系方式