最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C++POCO库中文编程

IT圈 admin 100浏览 0评论

2024年2月14日发(作者:缪星瑶)

引自;/mhxywg999

C++POCO库中文编程

1 What is POCO?

POCO 是什么?这是我最常被人问到的。POCO 是 POrtable COmponents 的缩写,官方主页:。是一个十分超卓的 C++ 库,相当于 Java 的 Class Library、.NET 的

Framework 和 Apple 的 Cocoa。它与 Boost 是十分不一样的,简单说 Boost 即是相当于

Advanced STL。

2 本系列文章所运用的 POCO 版别

POCO C++ Library 1.4.3p1 (2012-01-23)3 库逻辑布局

下图摘自 POCO 官网。OS API 是运用操作系统层的,C++/C Standard Libararies 是规范库,其他的模块都是 POCO 所供给的,包含:Foundation、XML、Crypto、XML、Util、Net、Zip、NetSSL、Data(撑持 SQLite、ODBC、MySQL)、Tools & Utilities、Application。

4 撑持渠道

Desktop/Server: - Windows - Linux - Mac OS X - Solaris - HP-UX - AIX

Embedded: - Windows Embedded CE - Embedded Linux (uClibc or glibc) - iOS - QNX -

VxWorks - Android

5 Namespaces

Poco

Poco::Crypto

Poco::Data

Poco::Data::MySQL

Poco::Data::ODBC

Poco::Data::SQLite

Poco::Net

Poco::Util

Poco::Util::Units

引自;/mhxywg999

Poco::Util::Units::Constants

Poco::Util::Units::Internal

Poco::Util::Units::Values

Poco::XML

Poco::Zip

C++ POCO库中文编程参阅攻略(2) 根本数据类型(Poco/Types.h)

根本类型在Poco/Types.h头文件中。以下以 GNU C/C++ 和 CLang 为例。不 过要着重的是,POCO 有极好的跨渠道性,你能想到的渠道,简直都能够运转 POCO。

1 有符号整型

typedef signed char Int8;

typedef signed short Int16;

typedef signed int Int32;

2 无符号整型

typedef unsigned char UInt8;

typedef unsigned short UInt16;

typedef unsigned int UInt32;

3 Pointer or Handler

typedef signed long IntPtr;

typedef unsigned long UIntPtr;

4 64 位整型

思考了 32 位机和 64 位机的状况

#if defined(__LP64__)

#define POCO_PTR_IS_64_BIT 1

#define POCO_LONG_IS_64_BIT 1

typedef signed long Int64;

引自;/mhxywg999

typedef unsigned long UInt64;

#else

typedef signed long long Int64;

typedef unsigned long long UInt64;

#endif

#define POCO_HAVE_INT64 1

C++ POCO库中文编程参阅攻略(3) Poco::Net::Socket

1 SelectMode

enum SelectMode

/// The mode argument to poll() and select().

{

SELECT_READ = 1,

SELECT_WRITE = 2,

SELECT_ERROR = 4

};2 SocketList

typedef std::vectorSocketList;

3 布局函数

未初始化的 socket:

Socket ();

复制布局函数

Socket(const Socket& socket);

4 重载运算符

赋值运算符:

Socket& operator = (const Socket& socket);

对比运算符:

bool operator ==

(const Socket& socket) const;

bool operator != (const Socket& socket) const;

bool operator < (const Socket& socket) const;

bool operator <= (const Socket& socket) const;

bool operator > (const Socket& socket) const;

引自;/mhxywg999

bool operator >= (const Socket& socket) const;5 常用 socket 操作

回来该 socket 的可读数据的字节数,该操作不导致 socket 堵塞:

int available() const;

封闭 socket:

void close();

poll:

bool poll(const

Poco::Timespan& timeout, int mode) const;

/// Determines the status of the socket, using a

/// call to select().

///

/// The mode argument is constructed by combining the values

/// of the SelectMode enumeration.

///

/// Returns true if the next operation corresponding to

/// mode will not block, false otherwise.

SocketImpl* impl() const;

/// Returns the SocketImpl for this socket.查看这个 socket 的衔接是不是是安全的(运用

SSL 或 TLS):

bool secure() const;

6 缓冲区

发送数据的缓冲区:

void setSendBufferSize(int size);

int getSendBufferSize() const;

接 收数据的缓冲区:

void setReceiveBufferSize(int size);

int getReceiveBufferSize() const;

引自;/mhxywg999

7 超不时刻

发送数据的超不时 间:

void setSendTimeout(const Poco::Timespan& timeout);

Poco::Timespan getSendTimeout() const;

接纳数据的超 不时刻:

void setReceiveTimeout(const Poco::Timespan& timeout);

Poco::Timespan getReceiveTimeout() const;

8 其他接口

void setOption(int level, int option, int value);

void setOption(int level, int option, unsigned value);

void setOption(int level, int option, unsigned char value);

void setOption(int level, int option, const Poco::Timespan&

value);

void setOption(int level, int option, const IPAddress& value);

void getOption(int level, int option, int& value) const;

void getOption(int level, int option, unsigned& value) const;

void getOption(int level, int option, unsigned char& value) const;

void getOption(int level, int option, Poco::Timespan& value)

const;

void getOption(int level, int option, IPAddress& value) const;

void setLinger(bool on, int seconds);

void getLinger(bool& on, int& seconds) const;

void setNoDelay(bool flag);

bool getNoDelay() const;

void setKeepAlive(bool flag);

bool getKeepAlive() const;

void setReuseAddress(bool flag);

引自;/mhxywg999

bool getReuseAddress() const;

void setReusePort(bool flag);

bool getReusePort() const;

void setOOBInline(bool flag);

bool getOOBInline() const;

void setBlocking(bool flag);

bool getBlocking() const;获取 socket 的 IP 和端口:

SocketAddress address() const;

获取 peer socket 的 IP 地 址和端口:

SocketAddress peerAddress() const;

9 静态函数

select:

static int select(SocketList& readList,

SocketList& writeList,

SocketList& exceptList,

const Poco::Timespan& timeout);

/// Determines the status of one or more sockets,

/// using a call to select().

///

/// ReadList contains the list of sockets which should be

/// checked for readability.

///

/// WriteList contains the list of sockets which should be

/// checked for writeability.

///

/// ExceptList contains a list of sockets which should be

/// checked for a pending error.

///

/// Returns the number of sockets ready.

///

/// After return,

/// * readList contains those sockets ready for reading,

/// * writeList contains those sockets ready for writing,

/// * exceptList contains those sockets with a pending error.

引自;/mhxywg999

///

/// If the total number of sockets passed in readList, writeList

and

/// exceptList is zero, select() will return immediately and the

/// return value will be 0.

///

/// If one of the sockets passed to select() is closed while

/// select() runs, select will return immediately. However,

/// the closed socket will not be included in any list.

/// In this case, the return value may be greater than the sum

/// of all sockets in all list.查看是不是撑持 IPv4 或 IPv6 :

static bool supportsIPv4();

static bool supportsIPv6 ();

C++ 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();

引自;/mhxywg999

复制布局函数:

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:

引自;/mhxywg999

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

引自;/mhxywg999

有播送地址,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:

引自;/mhxywg999

void init(IPAddressImpl* pImpl);

C++ POCO库中文编程参阅攻略(5) Poco::Net::SocketAddress

1 枚举

最大地址长度,这个与Poco::Net::IPAddress中的界说能够类 比,不过这里指的是`struct

sockaddr_in6

enum

{

MAX_ADDRESS_LENGTH =

#if defined(POCO_HAVE_IPv6)

sizeof(struct sockaddr_in6)

#else

sizeof(struct sockaddr_in)

#endif

/// Maximum length in bytes of a socket address.

};2 布局函数

创立一个 wildcard 的全 0 的 IPv4 的 socket 地址:

SocketAddress();

用 Poco::Net::IPAddress 和端口号创 建 IPv4 或 IPv6 的 SocketAddress:

SocketAddress(const IPAddress& host, Poco::UInt16 port);

用 std::string 和端口号 创立 IPv4 或 IPv6 的 SocketAddress:

SocketAddress(const std::string& host, Poco::UInt16 port);

SocketAddress(const std::string& host, const std::string& port);

explicit SocketAddress(const std::string& hostAndPort);

复制布局函数 :

SocketAddress(const SocketAddress& addr);

原生方法 布局 SocketAddress:

SocketAddress(const struct sockaddr* addr, poco_socklen_t length);

3 常用函数

引自;/mhxywg999

swap:

void swap (SocketAddress& addr);

获取 IPAddress、端口和地址类型:

IPAddress host() const;

Poco::UInt16 port() const;

IPAddress::Family family() const;

获取原生方法的地址长 度、地址和地址族:

poco_socklen_t length() const;

const struct sockaddr* addr() const;

int af() const;

toString:

std::string toString() const;

4 重载运算符

bool operator == (const SocketAddress& addr) const;

bool operator != (const SocketAddress& addr) const;

5 protected 函数

void init(const IPAddress& host, Poco::UInt16 port);

void init(const std::string& host, Poco::UInt16 port);

Poco::UInt16 resolveService(const std::string& service);

2024年2月14日发(作者:缪星瑶)

引自;/mhxywg999

C++POCO库中文编程

1 What is POCO?

POCO 是什么?这是我最常被人问到的。POCO 是 POrtable COmponents 的缩写,官方主页:。是一个十分超卓的 C++ 库,相当于 Java 的 Class Library、.NET 的

Framework 和 Apple 的 Cocoa。它与 Boost 是十分不一样的,简单说 Boost 即是相当于

Advanced STL。

2 本系列文章所运用的 POCO 版别

POCO C++ Library 1.4.3p1 (2012-01-23)3 库逻辑布局

下图摘自 POCO 官网。OS API 是运用操作系统层的,C++/C Standard Libararies 是规范库,其他的模块都是 POCO 所供给的,包含:Foundation、XML、Crypto、XML、Util、Net、Zip、NetSSL、Data(撑持 SQLite、ODBC、MySQL)、Tools & Utilities、Application。

4 撑持渠道

Desktop/Server: - Windows - Linux - Mac OS X - Solaris - HP-UX - AIX

Embedded: - Windows Embedded CE - Embedded Linux (uClibc or glibc) - iOS - QNX -

VxWorks - Android

5 Namespaces

Poco

Poco::Crypto

Poco::Data

Poco::Data::MySQL

Poco::Data::ODBC

Poco::Data::SQLite

Poco::Net

Poco::Util

Poco::Util::Units

引自;/mhxywg999

Poco::Util::Units::Constants

Poco::Util::Units::Internal

Poco::Util::Units::Values

Poco::XML

Poco::Zip

C++ POCO库中文编程参阅攻略(2) 根本数据类型(Poco/Types.h)

根本类型在Poco/Types.h头文件中。以下以 GNU C/C++ 和 CLang 为例。不 过要着重的是,POCO 有极好的跨渠道性,你能想到的渠道,简直都能够运转 POCO。

1 有符号整型

typedef signed char Int8;

typedef signed short Int16;

typedef signed int Int32;

2 无符号整型

typedef unsigned char UInt8;

typedef unsigned short UInt16;

typedef unsigned int UInt32;

3 Pointer or Handler

typedef signed long IntPtr;

typedef unsigned long UIntPtr;

4 64 位整型

思考了 32 位机和 64 位机的状况

#if defined(__LP64__)

#define POCO_PTR_IS_64_BIT 1

#define POCO_LONG_IS_64_BIT 1

typedef signed long Int64;

引自;/mhxywg999

typedef unsigned long UInt64;

#else

typedef signed long long Int64;

typedef unsigned long long UInt64;

#endif

#define POCO_HAVE_INT64 1

C++ POCO库中文编程参阅攻略(3) Poco::Net::Socket

1 SelectMode

enum SelectMode

/// The mode argument to poll() and select().

{

SELECT_READ = 1,

SELECT_WRITE = 2,

SELECT_ERROR = 4

};2 SocketList

typedef std::vectorSocketList;

3 布局函数

未初始化的 socket:

Socket ();

复制布局函数

Socket(const Socket& socket);

4 重载运算符

赋值运算符:

Socket& operator = (const Socket& socket);

对比运算符:

bool operator ==

(const Socket& socket) const;

bool operator != (const Socket& socket) const;

bool operator < (const Socket& socket) const;

bool operator <= (const Socket& socket) const;

bool operator > (const Socket& socket) const;

引自;/mhxywg999

bool operator >= (const Socket& socket) const;5 常用 socket 操作

回来该 socket 的可读数据的字节数,该操作不导致 socket 堵塞:

int available() const;

封闭 socket:

void close();

poll:

bool poll(const

Poco::Timespan& timeout, int mode) const;

/// Determines the status of the socket, using a

/// call to select().

///

/// The mode argument is constructed by combining the values

/// of the SelectMode enumeration.

///

/// Returns true if the next operation corresponding to

/// mode will not block, false otherwise.

SocketImpl* impl() const;

/// Returns the SocketImpl for this socket.查看这个 socket 的衔接是不是是安全的(运用

SSL 或 TLS):

bool secure() const;

6 缓冲区

发送数据的缓冲区:

void setSendBufferSize(int size);

int getSendBufferSize() const;

接 收数据的缓冲区:

void setReceiveBufferSize(int size);

int getReceiveBufferSize() const;

引自;/mhxywg999

7 超不时刻

发送数据的超不时 间:

void setSendTimeout(const Poco::Timespan& timeout);

Poco::Timespan getSendTimeout() const;

接纳数据的超 不时刻:

void setReceiveTimeout(const Poco::Timespan& timeout);

Poco::Timespan getReceiveTimeout() const;

8 其他接口

void setOption(int level, int option, int value);

void setOption(int level, int option, unsigned value);

void setOption(int level, int option, unsigned char value);

void setOption(int level, int option, const Poco::Timespan&

value);

void setOption(int level, int option, const IPAddress& value);

void getOption(int level, int option, int& value) const;

void getOption(int level, int option, unsigned& value) const;

void getOption(int level, int option, unsigned char& value) const;

void getOption(int level, int option, Poco::Timespan& value)

const;

void getOption(int level, int option, IPAddress& value) const;

void setLinger(bool on, int seconds);

void getLinger(bool& on, int& seconds) const;

void setNoDelay(bool flag);

bool getNoDelay() const;

void setKeepAlive(bool flag);

bool getKeepAlive() const;

void setReuseAddress(bool flag);

引自;/mhxywg999

bool getReuseAddress() const;

void setReusePort(bool flag);

bool getReusePort() const;

void setOOBInline(bool flag);

bool getOOBInline() const;

void setBlocking(bool flag);

bool getBlocking() const;获取 socket 的 IP 和端口:

SocketAddress address() const;

获取 peer socket 的 IP 地 址和端口:

SocketAddress peerAddress() const;

9 静态函数

select:

static int select(SocketList& readList,

SocketList& writeList,

SocketList& exceptList,

const Poco::Timespan& timeout);

/// Determines the status of one or more sockets,

/// using a call to select().

///

/// ReadList contains the list of sockets which should be

/// checked for readability.

///

/// WriteList contains the list of sockets which should be

/// checked for writeability.

///

/// ExceptList contains a list of sockets which should be

/// checked for a pending error.

///

/// Returns the number of sockets ready.

///

/// After return,

/// * readList contains those sockets ready for reading,

/// * writeList contains those sockets ready for writing,

/// * exceptList contains those sockets with a pending error.

引自;/mhxywg999

///

/// If the total number of sockets passed in readList, writeList

and

/// exceptList is zero, select() will return immediately and the

/// return value will be 0.

///

/// If one of the sockets passed to select() is closed while

/// select() runs, select will return immediately. However,

/// the closed socket will not be included in any list.

/// In this case, the return value may be greater than the sum

/// of all sockets in all list.查看是不是撑持 IPv4 或 IPv6 :

static bool supportsIPv4();

static bool supportsIPv6 ();

C++ 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();

引自;/mhxywg999

复制布局函数:

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:

引自;/mhxywg999

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

引自;/mhxywg999

有播送地址,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:

引自;/mhxywg999

void init(IPAddressImpl* pImpl);

C++ POCO库中文编程参阅攻略(5) Poco::Net::SocketAddress

1 枚举

最大地址长度,这个与Poco::Net::IPAddress中的界说能够类 比,不过这里指的是`struct

sockaddr_in6

enum

{

MAX_ADDRESS_LENGTH =

#if defined(POCO_HAVE_IPv6)

sizeof(struct sockaddr_in6)

#else

sizeof(struct sockaddr_in)

#endif

/// Maximum length in bytes of a socket address.

};2 布局函数

创立一个 wildcard 的全 0 的 IPv4 的 socket 地址:

SocketAddress();

用 Poco::Net::IPAddress 和端口号创 建 IPv4 或 IPv6 的 SocketAddress:

SocketAddress(const IPAddress& host, Poco::UInt16 port);

用 std::string 和端口号 创立 IPv4 或 IPv6 的 SocketAddress:

SocketAddress(const std::string& host, Poco::UInt16 port);

SocketAddress(const std::string& host, const std::string& port);

explicit SocketAddress(const std::string& hostAndPort);

复制布局函数 :

SocketAddress(const SocketAddress& addr);

原生方法 布局 SocketAddress:

SocketAddress(const struct sockaddr* addr, poco_socklen_t length);

3 常用函数

引自;/mhxywg999

swap:

void swap (SocketAddress& addr);

获取 IPAddress、端口和地址类型:

IPAddress host() const;

Poco::UInt16 port() const;

IPAddress::Family family() const;

获取原生方法的地址长 度、地址和地址族:

poco_socklen_t length() const;

const struct sockaddr* addr() const;

int af() const;

toString:

std::string toString() const;

4 重载运算符

bool operator == (const SocketAddress& addr) const;

bool operator != (const SocketAddress& addr) const;

5 protected 函数

void init(const IPAddress& host, Poco::UInt16 port);

void init(const std::string& host, Poco::UInt16 port);

Poco::UInt16 resolveService(const std::string& service);

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论