POCO库中文编程参考指南(4)Poco::Net::IPAddress
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
-
分享到:
相关推荐
使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件, 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的...
Poco C++库是:一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa; 侧重于互联网时代的网络应用程序 使用高效的,现代的标准ANSI/ISO C++,并基于STL 高可移值性
poco的TCPServer框架,里面包含服务端和客户端代码,编译环境:VS2013 poco动态库:1.7.4完整版
基于ubuntu16.04编译的Poco库 Poco库版本:1.8.0.1 POCO库是强大的的跨平台C++库,可以用来编写多平台的网络应用程序,这些平台包括桌面端、服务端、移动端、IOT(物联网)、嵌入式系统等。总的来说是一个非常强大的...
arm架构下的poco库文件,poco版本1.9.0.已包含编译mysql,redis,postgresql
poco库
一个开源的C++网络编程库poco-1.3.5-all,包含了多种网络协议。如 HTTP, FTP, SMTP, POP3等
poco/c++开源库学习资料打包下载,通过网络收集整理,比较多 POCO_C++库学习和分析_--__跨平台库的生成.docx POCO_C++库学习和分析_--__随机数和数字摘要.docx POCO_C++库学习和分析_--_Cache.docx POCO_C++库学习和...
采用VS2017完全编译的Poco库包含所有模块,静态库
POCO c++库代码以及技术文档
Poco库Foudation模块的UML 类图
POCO C++库是开源的用于简化和加速C++开发面向网络、可移植应用程序的C++库集,POCO库和C++标准库可以很好的集成并填补了C++标准库缺乏的功能空隙。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。在...
POCO C++是一个开源的C++类库的集合,它主要提供简单的、快速的网络和可移植应用程序的C++开发,这个类库和C++标准库可以很好的集成并填补C++标准库的功能空缺。POCO库的模块化、高效的设计及实现使得POCO特别适合...
c/c++的poco库的api文档,开发需要使用到poco库的朋友可以下载看看。全HTML 轻松查看各种接口。
poco 访问数据库测试例子,编译环境:VS2013 数据库:MySQL poco版本:1.7.4完整版
poco-1.3.6-all-doc poco库的文档,zip格式的,解压后用IE查看。
poco-1.4.0-all-doc poco库的文档
poco库的编译学习使用,关键字经过特殊标记,PDF格式学习方便
C++网络库POCO的文档。POCO是轻量级的网络库,适用于网络开发,如HTTP等
poco库用法,包括.lib、.dll的生成等详细步骤