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
-
分享到:
相关推荐
【C++ POCO库中文编程】 POCO库是一个强大的C++类库,其全称为“Portable Components”,致力于为开发互联网时代的网络应用程序提供高效、现代的解决方案。它使用标准的ANSI/ISO C++,并基于STL,具有高度的可移植...
在本文中,我们将深入探讨如何使用Poco库访问MySQL数据库,这是一个C++开发中的常见任务。Poco是一个轻量级、跨平台的开源C++库,提供了多种功能,包括网络、数据存取、XML解析、JSON处理等。在这个测试例子中,我们...
**Poco库与TCPServer框架** Poco库是一个开源的C++类库集合,它提供了许多用于构建网络、数据库、日志、XML处理、JSON解析等应用的基础组件。Poco库的设计目标是轻量级、高效且易于使用,使得开发者能够快速构建跨...
**POCO库详解** POCO库,全称为“Poor Man's Common C++ Object”,是一个开源的C++类库,旨在为开发跨平台的应用程序提供一套轻量级且强大的工具集。POCO库的设计理念是简单、高效且易于使用,它包含了许多现代...
在IT领域,Poco库是一个广泛使用的开源C++类库,它为开发跨平台的应用程序提供了许多基础组件。本文将详细探讨在ARM架构下使用Poco库,特别是针对Poco版本1.9.0,以及如何与MySQL、Redis和PostgreSQL数据库进行集成...
《轻量级C++网络库POCO..."poco-1.7.6-all-doc"这个压缩包中的文档详细阐述了POCO库的各个部分,是学习和使用POCO的重要参考资料。无论你是初次接触C++网络编程,还是寻求更高效的解决方案,POCO都是值得信赖的工具。
Poco 1.3.6 版本的all-doc文档提供了该版本库的详尽参考资料,帮助开发者理解和使用Poco库的各种功能。 Poco库的核心优势在于它的模块化设计,使得开发者可以根据项目需求选择使用哪些部分,而不会引入不必要的依赖...
使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件, 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的...
Poco库旨在简化和加速开发过程,尤其适用于网络编程、数据存取、XML处理、JSON操作、线程管理、日期和时间操作以及许多其他领域。它不仅包含了众多实用的类和函数,还提供了现代C++设计模式的实现,使得开发人员可以...
C++ POCO 库中文文档 C++ POCO 库是一个开源的 C++ 类库的集合,主要提供简单的、快速的网络和可移植应用程序的 C++ 开发。该库和 C++ 标准库可以很好的集成并填补 C++ 标准库的功能空缺。POCO 库的模块化、高效的...
Poco是著名的开源C++库,它为开发者提供了丰富的网络编程工具和类库,使得在C++中处理网络任务变得更加简单高效。Poco-1.3.5-all版本是一个全面的发布,包含了Poco库的多个组件,这些组件涵盖了广泛的编程需求,特别...
Poco库是一个功能丰富的C++库,用于构建跨平台的应用程序。它包含了网络、数据库、XML解析、JSON处理、加密、日志等多个模块。在邮件发送方面,Poco库提供了Net库中的MailMessage类和SMTPClientSession类,使得...
Poco库源码是C++开发者的一个重要资源,它是一个高度模块化、可移植的开源库,旨在简化和加速各种应用程序的开发,尤其在网络编程和跨平台应用中表现卓越。Poco库由多个组件组成,涵盖了网络、数据访问、XML处理、...
在Poco库中,网络编程是其核心功能之一。Poco库提供了Net库,包含了HTTP、HTTPS、FTP等协议的客户端和服务器实现,使得开发者可以轻松地进行网络通信。例如,你可以使用Poco::Net::HTTPClientSession来发起HTTP请求...
2. **Net**: 网络编程模块,支持TCP/IP通信,HTTP、HTTPS、FTP协议,还包括SMTP和POP3用于电子邮件处理。此外,还提供了DNS查询功能。 3. **Data**: 提供了数据库访问接口,支持多种数据库系统(如SQLite、MySQL、...
Poco库是一个开源的C++库,包含了众多用于构建网络、数据库、日志、XML解析、JSON处理、加密和时间管理等任务的组件。在Windows环境下编译Poco库,通常是为了满足特定项目的需求,例如需要针对x64架构进行优化或者与...
在Poco库中,通知和事件机制是实现组件间通信和异步编程的关键部分。 通知和事件在软件开发中扮演着重要角色,它们允许对象之间相互通信,而无需直接相互依赖。Poco库中的事件模型基于发布/订阅(publish/subscribe...
4. **链接库文件**:在链接阶段,添加Poco库的动态或静态库。 5. **编写代码**:利用Poco库提供的接口进行编程。 6. **测试与调试**:使用Poco的日志功能进行调试,确保程序的正确性。 四、Poco库的应用场景 1. ...
1. **网络编程**: Poco库中的Net组件提供了全面的TCP/IP网络编程接口,包括HTTP、HTTPS、FTP、SMTP等协议的支持。你可以使用这些接口轻松实现Web服务客户端和服务器,文件上传下载,邮件发送等功能。 2. **数据访问...