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