ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.57KB ,
资源ID:5355669      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5355669.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++POCO库中文编程.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++POCO库中文编程.docx

1、C+POCO库中文编程C+POCO库中文编程1 What is POCO?POCO 是什么?这是我最常被人问到的。POCO 是 POrtable COmponents 的缩写,官方主页:POCOProject.org。是一个十分超卓的 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 官

2、网。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 - AIXEmbedded: - Windows Embedded CE - Embedded Linux (uC

3、libc or glibc) - iOS - QNX - VxWorks - Android5 NamespacesPocoPoco:CryptoPoco:DataPoco:Data:MySQLPoco:Data:ODBCPoco:Data:SQLitePoco:NetPoco:UtilPoco:Util:UnitsPoco:Util:Units:ConstantsPoco:Util:Units:InternalPoco:Util:Units:ValuesPoco:XMLPoco:ZipC+ POCO库中文编程参阅攻略(2) 根本数据类型(Poco/Types.h)根本类型在Poco/Type

4、s.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 Handlertypedef signed long IntPtr;

5、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; typedef unsigned long UInt64; #else typedef signed long long Int64; typedef unsigned long long UInt64; #endif #define POCO_HAVE_INT64 1C+

6、 POCO库中文编程参阅攻略(3) Poco:Net:Socket1 SelectModeenum SelectMode / The mode argument to poll() and select(). SELECT_READ = 1, SELECT_WRITE = 2, SELECT_ERROR = 4 ;2 SocketListtypedef std:vectorSocketList;3 布局函数未初始化的 socket:Socket ();复制布局函数Socket(const Socket& socket);4 重载运算符赋值运算符:Socket& operator = (cons

7、t 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;5 常用 socket 操作回来该 socket 的可读数据的字节数,该操作不导致 socket 堵塞

8、:int available() const;封闭 socket:void close();poll:bool poll(constPoco: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 ope

9、ration 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

10、(int size);int getReceiveBufferSize() const;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

11、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

12、) 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 secon

13、ds); 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); bool getReuseAddress() const; void setReusePort(bool flag); bool getReusePort() const; void setOOBInline(b

14、ool 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

15、, 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 cont

16、ains 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.

17、/ / If the total number of sockets passed in readList, writeListand / 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

18、 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:IPAddress1 Poco:Net:IPAddress地址最大长度,IPv4 是 in_addr 的长度, IPv6 是 in6_addr 的长度

19、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();

20、复制布局函数: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 是十六进制表 示的:IPAd

21、dress(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, Po

22、co: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 IPAddres

23、s& 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

24、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 是不是是未初始 化状

25、况是不是是未初始化的全零状况(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:

26、x:x:x:x:x:x的规模:函数原型:bool isMulticast() const;是不是是单播:bool isUnicast() const;1.5.2 其他函数boolisLinkLocal() const; bool isSiteLocal() const;bool isIPv4Compatible() const;bool isIPv4Mapped() const;bool isWellKnownMC() const;bool isNodeLocalMC() const; bool isLinkLocalMC() const; bool isSiteLocalMC() const

27、;bool isOrgLocalMC() const;bool isGlobalMC() const;1.5 protected 函数protected:void init(IPAddressImpl* pImpl);C+ POCO库中文编程参阅攻略(5) Poco:Net:SocketAddress1 枚举最大地址长度,这个与Poco:Net:IPAddress中的界说能够类 比,不过这里指的是struct sockaddr_in6enum MAX_ADDRESS_LENGTH = #if defined(POCO_HAVE_IPv6) sizeof(struct sockaddr_in6)

28、 #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 的 Sock

29、etAddress: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

30、_socklen_t length);3 常用函数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 SocketAddres

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1