博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POCO库中文编程参考指南(4)Poco::Net::IPAddress
阅读量:6153 次
发布时间:2019-06-21

本文共 2822 字,大约阅读时间需要 9 分钟。

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

  • 作者:柳大·Poechant
  • 博客:
  • 邮箱:zhongchao.ustc#gmail.com (# -> @)
  • 日期:April 14th, 2012

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.0239.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);

-

from:

转载地址:http://idbfa.baihongyu.com/

你可能感兴趣的文章
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
JQuery radio单选框应用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>