`

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

 
阅读更多

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

  • 作者:柳大·Poechant
  • 博客:Blog.CSDN.net/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);

-

转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant

-

分享到:
评论

相关推荐

    C++POCO库中文编程

    【C++ POCO库中文编程】 POCO库是一个强大的C++类库,其全称为“Portable Components”,致力于为开发互联网时代的网络应用程序提供高效、现代的解决方案。它使用标准的ANSI/ISO C++,并基于STL,具有高度的可移植...

    Poco访问数据库(测试例子MySQl)

    在本文中,我们将深入探讨如何使用Poco库访问MySQL数据库,这是一个C++开发中的常见任务。Poco是一个轻量级、跨平台的开源C++库,提供了多种功能,包括网络、数据存取、XML解析、JSON处理等。在这个测试例子中,我们...

    Poco:TCPServer框架

    **Poco库与TCPServer框架** Poco库是一个开源的C++类库集合,它提供了许多用于构建网络、数据库、日志、XML处理、JSON解析等应用的基础组件。Poco库的设计目标是轻量级、高效且易于使用,使得开发者能够快速构建跨...

    POCO库及文档

    **POCO库详解** POCO库,全称为“Poor Man's Common C++ Object”,是一个开源的C++类库,旨在为开发跨平台的应用程序提供一套轻量级且强大的工具集。POCO库的设计理念是简单、高效且易于使用,它包含了许多现代...

    arm架构下的poco库文件

    在IT领域,Poco库是一个广泛使用的开源C++类库,它为开发跨平台的应用程序提供了许多基础组件。本文将详细探讨在ARM架构下使用Poco库,特别是针对Poco版本1.9.0,以及如何与MySQL、Redis和PostgreSQL数据库进行集成...

    轻量级C++网络库poco文档

    《轻量级C++网络库POCO..."poco-1.7.6-all-doc"这个压缩包中的文档详细阐述了POCO库的各个部分,是学习和使用POCO的重要参考资料。无论你是初次接触C++网络编程,还是寻求更高效的解决方案,POCO都是值得信赖的工具。

    使用POCO库操作sqlite

    使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件, 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的...

    一个开源的C++网络编程库poco-1.3.5-all

    Poco是著名的开源C++库,它为开发者提供了丰富的网络编程工具和类库,使得在C++中处理网络任务变得更加简单高效。Poco-1.3.5-all版本是一个全面的发布,包含了Poco库的多个组件,这些组件涵盖了广泛的编程需求,特别...

    poco-1.3.6-all-doc poco库的文档

    Poco 1.3.6 版本的all-doc文档提供了该版本库的详尽参考资料,帮助开发者理解和使用Poco库的各种功能。 Poco库的核心优势在于它的模块化设计,使得开发者可以根据项目需求选择使用哪些部分,而不会引入不必要的依赖...

    poco库学习

    在Poco库中,网络编程是其核心功能之一。Poco库提供了Net库,包含了HTTP、HTTPS、FTP等协议的客户端和服务器实现,使得开发者可以轻松地进行网络通信。例如,你可以使用Poco::Net::HTTPClientSession来发起HTTP请求...

    编译失败的Poco库

    Poco库是一个开源的C++库,包含了众多用于构建网络、数据库、日志、XML解析、JSON处理、加密和时间管理等任务的组件。在Windows环境下编译Poco库,通常是为了满足特定项目的需求,例如需要针对x64架构进行优化或者与...

    poco库源代码 c++准标准库

    Poco库旨在简化和加速开发过程,尤其适用于网络编程、数据存取、XML处理、JSON操作、线程管理、日期和时间操作以及许多其他领域。它不仅包含了众多实用的类和函数,还提供了现代C++设计模式的实现,使得开发人员可以...

    poco库通知与事件

    在Poco库中,通知和事件机制是实现组件间通信和异步编程的关键部分。 通知和事件在软件开发中扮演着重要角色,它们允许对象之间相互通信,而无需直接相互依赖。Poco库中的事件模型基于发布/订阅(publish/subscribe...

    C++POCO-lib(中文文档).pdf

    C++ POCO 库中文文档 C++ POCO 库是一个开源的 C++ 类库的集合,主要提供简单的、快速的网络和可移植应用程序的 C++ 开发。该库和 C++ 标准库可以很好的集成并填补 C++ 标准库的功能空缺。POCO 库的模块化、高效的...

    poco-1.4.0-all-doc poco库的文档

    4. **链接库文件**:在链接阶段,添加Poco库的动态或静态库。 5. **编写代码**:利用Poco库提供的接口进行编程。 6. **测试与调试**:使用Poco的日志功能进行调试,确保程序的正确性。 四、Poco库的应用场景 1. ...

    c/c++ poco库api HTML文档说明

    1. **网络编程**: Poco库中的Net组件提供了全面的TCP/IP网络编程接口,包括HTTP、HTTPS、FTP、SMTP等协议的支持。你可以使用这些接口轻松实现Web服务客户端和服务器,文件上传下载,邮件发送等功能。 2. **数据访问...

    poco-1.7.6.zip

    4. **JSON序列化**:JSON是另一种常见的数据交换格式,Poco库的JSON模块提供了JSON对象与C++对象之间的序列化和反序列化,便于数据的存储和传输。 5. **日志记录**:日志系统是任何软件项目的关键部分,Poco库的...

    poco库发送邮件的几个实例

    Poco库是一个功能丰富的C++库,用于构建跨平台的应用程序。它包含了网络、数据库、XML解析、JSON处理、加密、日志等多个模块。在邮件发送方面,Poco库提供了Net库中的MailMessage类和SMTPClientSession类,使得...

    POCO库文件

    1. **网络模块**:POCO库提供了全面的网络编程接口,包括HTTP、HTTPS、FTP、SMTP、IMAP、POP3协议的支持,以及套接字和TCP/IP编程的基础工具。这使得开发者可以轻松创建Web服务器、客户端或者其他基于网络的应用程序...

Global site tag (gtag.js) - Google Analytics