PoCoOverview poco类库

合集下载

poco库介绍

poco库介绍

POCO C++库导游2010年07月16日星期五 15:23POCO C++库导游IntroductionA Guided Tour of the POCO C++ Libraries简介POCO C++库是开源的用于简化和加速C++开发面向网络、可移植应用程序的C++库集,POCO库和C++标准库可以很好的集成并填补了C++标准库缺乏的功能空隙。

POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。

在嵌入式开发领域,由于C++既适合底层(设备I/O、中断处理等)和高层面向对象开发,越来越流行。

当然POCO也准备好了面对企业级挑战。

包含4个核心库及一些附加库. 这4个核心库是: Foundation, XML, Util 和Net. 附加库中其中2个是NetSSL和Data,NetSSL为Net库中的网络类提供SSL 支持, Data库提供访问不同SQL数据库的一致性接口。

POCO以网络中心的跨平台C++软件开发,就像苹果的Cocoa之余Mac开发, 或Ruby on Rails 之余Web 开发—强大而不失简单有趣的用于创建应用的平台. POCO 严格使用标准ANSI/ISO C++创建, 包含标准库. 程序库的贡献者试图在使用C++高级特性、易于理解的类、干净的代码、连续及易于维护间得到平衡.Foundation基本库Foundation库是POCO的心脏.它包含底层平台的封装层,也包含经常使用的工具类和函数. 包含规定字节大小整数类型, 转换整数与字节顺序的函数, Poco::Any 类 (基于 boost::any), 错误处理及调试工具, 包含各种异常类和支持断言. 同时也包含一些内存管理类, 包括基于引用计数的智能指针,和用与buffer管理及内存池的类. 对于字符串的处理, POCO包含一些函数和其他的东西, 串trim操作, 大小写敏感的比较和大小写转换. 以类对Unicode的基本支持:转换文本的不同编码, 包括UTF-8 和 UTF-16. 支持格式化和解析数字, 包括sprintf 的类型安全变量. 还提供了基于著名的PCRE 库()的正则表达式。

POCO库中文编程参考指南(7)PocoNetDatagramSocket

POCO库中文编程参考指南(7)PocoNetDatagramSocket
3 常用操作
3.1 连接与绑定
void connect(const SocketAddress& address); void bind(const SocketAddress& address, bool reuseAddress = false);
3.2 收发数据且不考虑 client
int sendBytes(const void* buffer, int length, int flags = 0); int receiveBytes(void* buffer, int length, int flags = 0);
3.4 收发广播
void setBroadcast(bool flag); bool getBroadcast() const;
4 protected 函数
DatagramSocket(SocketImpl* pImpl);
-
POCO 库中文编程参考指南(7)Poco::Net::DatagramSocket
1 构造函数
创建一个未连接的 IPv4 数据报 Socket:
DatagramSocket();
创建一个指定 IP 类型(IPv4 或 IPv6)的数据报 Socket:
explicit DatagramSocket(IPAddress::Family family);
3.3 手法数据且获取 client 的 SocketAddress
int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0)ห้องสมุดไป่ตู้ int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0);

POCO库——Foundation组件之加解密Crypt

POCO库——Foundation组件之加解密Crypt

POCO库——Foundation组件之加解密Crypt
加解密Crypt:内部提供多种加解密⽅式、信息摘要提取、随机数产⽣等,具体的算法内部实现不做研究学习;
DigestEngine.h :DigestEngine类作为各种摘要提取的基类,提供必要的接⼝;update:参数为提供将被提取的数据信息,digest:获取信息摘要,digestLength:获取信息摘要的长度;
reset:重置将被提取的数据信息以重新产⽣信息摘要计算,digestToHex与digestFromHex:信息摘要与⼗六进制数据串相互转
化,updateImpl:更新数据信息,提取该信息摘要,由⼦类
实现具体的提取过程;
MD4Engine.h/MD5Engine.h :MD4Engine/MD5Engine类分别为MD4、MD5信息摘要算法,以测试信息完整性的密码散列函数,摘要长度128位(16字节),⼀般以32位的⼗六进制表⽰;
SHA1Engine.h :SHA1Engine类为SHA1信息摘要算法,摘要长度为位160位(20字节),⼀般以40位的⼗六进制表⽰;HMACEngine.h/PBKDF2Engine.h :HMACEngine、PBKDF2Engine类继承于DigestEngine类,采⽤模板参数的形式,传⼊
MD4Engine/MD5Engine/SHA1Engine作为基础摘要⽣成引擎,⽽⼀般情况下
,PBKDF2Engine⼜以HMACEngine作为模板参数封装;
Random.h :伪随机数⽣成器;基于FreeBSD中的random number generator实现,⽬前提供了5种⽣成器;。

androiduiautomationpoco参数

androiduiautomationpoco参数

androiduiautomationpoco参数POCO(Powerful GUI Object Control)是一款基于Android平台开发的自动化测试工具,用于对Android应用程序进行UI自动化测试。

它提供了一些参数用于集成到Android自动化测试框架中,以便进行更精确和高效的测试。

以下是一些常用的POCO参数:1. findAndFocus:此参数用于查找并将焦点聚集在指定的UI元素上。

它接受一个字符串作为参数,该字符串描述了要查找的UI元素的层次结构。

例如,"android.widget.Button#button1"表示查找名为“button1”的Button控件。

2. selectedItem:当在列表控件中选择一个项目时,可以使用此参数指定要选择的项目的位置。

例如,"1"表示选择列表中的第一个项目。

4. ignoreHiddenView:此参数用于指定是否忽略隐藏的UI元素。

默认情况下,POCO会尝试查找所有可见的UI元素。

设置为true时,POCO将只查找可见的UI元素。

5. threshold:此参数用于设置POCO在查找模糊匹配的UI元素时的匹配度。

它接受一个[0, 1]之间的浮点数作为参数,表示匹配度的阈值。

默认情况下,阈值为0.76. scrollableParent:当需要在可滚动的容器中查找UI元素时,可以使用此参数指定可滚动的父级元素的层次结构描述。

例如,"android.widget.ListView#listView"表示查找名为“listView”的ListView控件作为可滚动的父级元素。

7. index:此参数用于指定在找到多个匹配的UI元素时要选择的元素的索引位置。

例如,设置index为0将选择匹配到的第一个元素。

8. regex:此参数用于指定查找UI元素时使用的正则表达式。

它接受一个字符串作为参数,可以包含正则表达式的模式。

POCO C++简介

POCO C++简介

Poco的使命
Poco是一个强大的类库,并易于构建自己的应用程序 Poco帮助你创建跨平台的应用程序(一次编写,多平台编译和运行) 模块化和可扩展,可应用于嵌入式到企业级程序 提供全面,易懂的编程接口 使用C++语言,快速且高效 Poco崇尚简易
在设计,代码风格和文档上保持一致
Poco强调代码质量,包括可读性,综合性,一致性,编码风格和可测试性 Poco使得C++编程更加容易
支持平台
桌面/服务器:
Windows, Linux, Mac OS X, Solaris, HP-UX, AIX
嵌入式系统:
Windows Embedded CE, Embedded Linux (uClibc or glibc), iOS, QNX, VxWorks, Android
2017年2月:Release 1.7.8
2017年2月:Release 1.7.8p2
Poco库概览
核心特性
支持Any 和 DynamicAny 的动态类型 提供缓存框架 日期和时间 事件与通知框架 基于PCRE的正则表达式 动态库加载
完美的指针和内存管理 (buffer, pool)
数据库
不同的数据库提供了统一的访问接口(SQLite, MySQL, ODBC) 自动数据类型匹配
支持集合类 (std::vector, std::set, std::map, etc.)
支持记录集和tuples 支持连接池
资源文档
官网(英文):https:/// 用户指南: https:///docs/ 中文网站(个人):/ 博客专栏:POCO C++库学习和分析(共33篇,作者:napu_sh)

C++POCO库中文编程

C++POCO库中文编程

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 - AIXEmbedded: - Windows Embedded CE - Embedded Linux (uClibc 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/Types.h头文件中。

poco 计算机用语

poco 计算机用语

poco 计算机用语随着计算机技术的不断发展,人们对于计算机用语的需求也越来越多。

其中,Poco计算机用语是比较常见的一个。

那么,什么是Poco 计算机用语?如何使用它?下面将为您做详细解答。

一、Poco计算机用语是什么?Poco计算机用语是一种基于C++开发平台的跨平台开发框架。

它主要用于开发网络应用程序、移动应用程序以及桌面应用程序等。

Poco计算机用语包含了很多模块,例如:网络模块、XML模块、加解密模块、数据库模块、多线程模块和Web模块等。

这些模块可以让程序开发人员更加方便地开发出高质量的应用程序。

二、如何使用Poco计算机用语?1. 引入Poco库在使用Poco计算机用语之前,需要先将Poco库引入到我们的项目中。

在C++语言中,需要通过#include语句引入目标库,例如:```#include "Poco/Net/HTTPServer.h"```2. 创建Poco应用程序要使用Poco计算机用语开发一个应用程序,首先需要创建一个Poco应用程序对象。

代码如下:```#include "Poco/Util/Application.h"class MyApp : public Poco::Util::Application{public:void initialize(Application& self){loadConfiguration(); // load default configuration files, if presentPoco::Util::Application::initialize(self);}void uninitialize(){Poco::Util::Application::uninitialize();}void defineOptions(Poco::Util::OptionSet& options){ Poco::Util::Application::defineOptions(options);}void handleOption(const std::string& name, const std::string& value){Poco::Util::Application::handleOption(name, value); }int main(const std::vector<std::string>& args){if (!help()) {// do something}return Application::EXIT_OK;}};POCO_APP_MAIN(MyApp)```3. 使用Poco库中的各个模块通过引入Poco库以及创建Poco应用程序对象,我们就可以使用Poco库中的各个模块了。

poco库timer的用法

poco库timer的用法

poco库timer的用法Poco库是一个轻量级C++类库,提供了许多功能强大且易于使用的组件和工具,旨在简化和加速C++应用程序的开发过程。

其中之一就是Poco 库中的Timer组件,它提供了一种方便的方式来实现定时任务。

本文将一步一步介绍如何使用Poco库的Timer组件。

第一步:引入Poco库首先,我们需要在项目中引入Poco库,以便能够使用Timer组件。

可以从Poco官方网站下载并安装最新版本的Poco库,或者使用包管理器(如vcpkg)来安装。

在C++源文件中,使用以下代码包含Poco库的头文件:cpp#include <Poco/Timer.h>#include <Poco/Thread.h>第二步:创建Timer任务接下来,我们需要创建一个Timer任务,用于指定定时执行的代码。

在Poco中,可以通过继承Poco::TimerTask类来实现一个自定义的定时任务。

例如,我们创建一个名为MyTask的自定义类,如下所示:cppclass MyTask : public Poco::TimerTask{public:void run(){在这里写入定时执行的代码}};在run()函数中,你可以编写你想要在每次定时执行中执行的代码。

第三步:创建Timer对象接下来,我们需要创建一个Poco::Timer对象,用于实际触发定时任务。

通常,我们将Timer对象作为成员变量存储在某个类中,以确保它在整个生命周期内保持有效。

cppclass MyClass{private:Poco::Timer _timer;public:MyClass(){创建Timer对象,并绑定执行的定时任务Poco::TimerCallback<MyClass> callback(*this,&MyClass::onTimer);_timer.schedule(callback, Poco::Timestamp(), 1000); 每隔1秒触发一次任务}void onTimer(Poco::Timer& timer){在这里写入定时任务的代码}};在构造函数中,我们创建了一个名为callback的Poco::TimerCallback对象,并将其绑定到onTimer()成员函数上。

poco mysql用法

poco mysql用法

poco mysql用法Poco是一个开源的C++类库,能够以高效和简单的方式处理数据库操作,其中包括了对MySQL数据库的支持。

本文将一步步介绍Poco库的MySQL用法,包括连接数据库、执行SQL语句、获取查询结果等。

1. 安装Poco库首先,我们需要在项目中安装Poco库。

可以通过从Poco官方网站下载源代码并手动编译安装,或者使用包管理器(如CocoaPods、vcpkg等)进行安装。

2. 连接MySQL数据库在使用Poco库进行MySQL数据库操作之前,我们需要先建立数据库连接。

Poco 提供了Poco::Data::Session类来进行连接数据库的操作。

(1)创建一个Poco::Data::MySQL::Connector对象,该对象将用于连接到MySQL 数据库。

cppinclude <Poco/Data/MySQL/Connector.h>在代码的合适位置调用以下代码Poco::Data::MySQL::Connector::registerConnector();(2)创建一个Poco::Data::Session对象,该对象将用于执行SQL语句。

cppinclude <Poco/Data/Session.h>创建数据库连接Poco::Data::Session session("MySQL","host=xxx;port=xxx;user=xxx;password=xxx;db=xxx");其中,host为MySQL服务器的地址,port为服务器的端口号,user为连接数据库所使用的用户名,password为用户名对应的密码,db为要连接的数据库名称。

(3)判断数据库连接状态。

cppif (session.isConnected()) {数据库连接成功} else {数据库连接失败}3. 执行SQL语句连接数据库成功后,我们可以使用Poco库来执行各种SQL语句。

poco用法 -回复

poco用法 -回复

poco用法-回复Poco,全名为Portability and Optimized C++ Library,是一个跨平台的C++开发框架,广泛应用于移动设备开发及游戏开发等领域。

它提供了丰富的工具和类库,可以简化C++应用程序的开发过程,提高开发效率。

本文将一步一步回答关于Poco用法的问题,介绍如何使用该框架进行开发工作。

第一步:Poco的安装在开始使用Poco之前,首先需要将Poco框架安装到开发环境中。

Poco框架的安装步骤可能会因开发环境不同而有所不同,但一般来说,可以通过以下步骤完成:1. 下载Poco源码:Poco项目的源码通常可以在官方网站上下载。

根据你的操作系统和编译器版本选择合适的源码包,下载到本地。

2. 解压源码:将下载的源码包解压到你希望安装Poco的目录下。

3. 编译Poco:打开终端或命令提示符窗口,进入到Poco源码目录下执行相应的编译命令。

具体的编译命令需要根据你的操作系统和编译器来确定,可以在Poco的官方文档中找到相关信息。

4. 安装Poco:编译完成后,执行安装命令将Poco框架安装到系统中。

同样,具体的安装命令也可以在官方文档中找到。

完成以上步骤后,Poco框架就已经安装到了你的开发环境中,可以开始使用它进行开发工作了。

第二步:Poco的基本用法在开始使用Poco框架进行开发之前,首先需要在你的项目中引入Poco 的头文件和库文件。

这可以通过修改你的项目工程文件来完成,具体的方法会因开发工具而有所不同。

在引入完Poco框架后,你可以使用Poco提供的丰富功能来简化你的开发工作。

以下是几个常用的Poco模块和它们的用法说明:1. Poco Foundation:Poco Foundation模块提供了许多基础的类和工具,用于处理字符串、日期时间、文件、网络通信等。

使用该模块的常用步骤如下:- 引入头文件:在你的源文件中引入`Poco`下所需的头文件,例如:`#include <Poco/DateTime.h>`- 使用类或工具:在你的代码中使用Poco Foundation模块提供的类或工具,例如:`Poco::DateTime now;`2. Poco Net:Poco Net模块提供了网络编程所需的类和工具,用于创建和管理网络连接、发送和接收数据等。

c++ poco 事件 同步异步 原理

c++ poco 事件 同步异步 原理

C++ Poco事件-同步异步的深度解析在C++编程领域中,Poco(即C++通用组件库)是一个非常受欢迎的开源类库,它提供了许多丰富的功能和组件,其中的事件系统是其核心功能之一。

在实际应用中,我们常常需要处理各种事件,而了解Poco事件的同步异步原理对我们理解事件驱动编程有着重要的意义。

1. 什么是Poco事件?在Poco库中,事件是一种通过触发和响应机制来传递信息和进行交互的重要手段。

事件的触发者和响应者之间通过事件进行了解耦,使得整个系统更加灵活和可扩展。

2. Poco事件的同步与异步在Poco库中,事件通常可以被分为同步事件和异步事件两种类型。

对于同步事件,触发事件的线程和处理事件的线程是同一个线程,事件的触发和处理是顺序执行的。

而对于异步事件,触发事件的线程和处理事件的线程是不同的,事件的处理通常是在另一个线程中进行的,这样可以提高系统的响应速度和并发能力。

3. Poco事件的原理Poco事件的实现原理主要是基于观察者设计模式和信号与槽机制。

观察者设计模式通过定义一个主题和多个观察者,实现主题状态变化时的通知和观察者的更新。

而信号与槽机制则是一种基于回调的事件处理方式,当事件触发时,通过信号传递给槽函数进行处理。

4. Poco事件的使用在实际的C++项目中,我们可以通过Poco库提供的各种类和方法来使用事件。

首先需要定义一个事件类,并在需要的地方触发事件,监听事件并进行相应的处理。

对于同步事件,可以直接使用Poco库中提供的事件类;对于异步事件,通常需要创建新的线程或者利用Poco 中提供的线程池来进行处理。

总结与展望:通过本文的介绍,我们对于Poco事件的同步异步原理有了更深入的了解。

对于事件驱动的编程模式,理解事件的触发和处理方式,对于提高系统的性能和稳定性有着重要的意义。

在日后的C++项目中,我们可以充分利用Poco事件的特性,提高系统的可扩展性和并发能力。

个人观点:在实际项目中,我曾经在一个高并发的服务器程序中广泛使用Poco库中的事件机制。

poco用法

poco用法

poco用法一、概述Poco是一个功能强大的开源C++库,用于开发各种类型的应用程序,包括网络应用、图形用户界面(GUI)、数据库访问等。

本篇文章将介绍Poco的基本用法,包括安装、配置、基本使用等。

二、安装PocoPoco的安装过程因操作系统而异,具体步骤如下:1. 下载Poco库的最新版本,可以从Poco官方网站下载。

2. 将下载的Poco库文件解压到指定目录,如:/usr/local/poco。

3. 在终端中输入命令:source /usr/local/poco/bin/setenv.sh (或source /usr/local/poco/bin/setenv.bat),根据操作系统选择对应的命令。

该命令会设置环境变量,使得Poco库中的函数可以在当前终端中调用。

三、配置Poco在完成Poco库的安装后,需要进行一些配置,以确保应用程序能够正确使用Poco库。

1. 创建应用程序项目:使用合适的开发环境(如Visual Studio、CLion等)创建一个新的C++项目,并将Poco库作为依赖项添加到项目中。

2. 配置Poco库路径:在项目属性中,将Poco库的路径添加到“Include Path”和“Library Path”中。

3. 链接Poco库:在项目属性中,将Poco库对应的.lib文件添加到项目中。

四、基本使用Poco完成以上步骤后,就可以开始使用Poco库了。

以下是一些基本用法示例:1. 创建对象:使用Poco库提供的类创建对象,如:Poco::Net::ServerSocket serverSocket(1234);。

2. 连接和通信:使用Poco库提供的类进行网络通信,如:Poco::Net::SocketStream stream(serverSocket);。

3. 文件操作:使用Poco库提供的类进行文件操作,如:Poco::File file("/path/to/file");。

poco 编译参数

poco 编译参数

poco 编译参数Poco是一个跨平台的C++库,用于开发网络应用程序,包括HTTP客户端和服务器,SMTP,POP3,IMAP,WebSocket和RESTful Web服务等。

Poco库致力于提供高效和可靠的基础设施,可以帮助开发者减轻网络应用程序开发的负担。

在使用Poco库开发网络应用程序时,编译参数是至关重要的。

Poco库支持多种平台和编译器,包括Windows,Linux,Mac OS X,FreeBSD等。

不同的平台和编译器需要不同的编译参数来编译Poco 库。

下面列出了一些最常用的编译参数:1. -DPOCO_DISABLE_CPP11:禁用C++11支持。

在一些旧的编译器上,可能无法支持C++11的新特性。

可以使用这个参数来禁用C++11的特性,以便在这些编译器上编译。

2. -DPOCO_ENABLE_CPP14:启用C++14支持。

在支持C++14的编译器上,可以使用这个参数来启用C++14的特性。

3. -DPOCO_ENABLE_CPP17:启用C++17支持。

在支持C++17的编译器上,可以使用这个参数来启用C++17的特性。

4. -DPOCO_UNBUNDLED:不使用静态库。

默认情况下,Poco库将静态库打包在一起供用户使用。

使用这个参数可以禁用打包,并将静态库分离开来。

5. -DPOCO_NO_FPENVIRONMENT:禁用浮点环境。

默认情况下,Poco库支持浮点环境。

使用这个参数可以禁用浮点环境。

6. -DPOCO_NO_SHAREDMEMORY:禁用共享内存。

默认情况下,Poco库支持共享内存。

使用这个参数可以禁用共享内存。

7. -DPOCO_NO_WSTRING:禁用宽字符。

默认情况下,Poco库支持宽字符。

使用这个参数可以禁用宽字符。

8. -DPOCO_NO_SOCKETS:禁用套接字。

默认情况下,Poco库支持套接字。

使用这个参数可以禁用套接字。

以上是一些常用的编译参数,可以根据实际需求选择使用。

poco 线程池用法 -回复

poco 线程池用法 -回复

poco 线程池用法-回复Poco线程池用法Poco是一个基于C++的开源类库,提供了丰富的工具和组件,用于快速开发跨平台的应用程序。

其中,Poco线程池是其中一个很重要的组件,它能够简化多线程编程和管理,提高程序性能和可维护性。

本文将详细介绍Poco线程池的用法,并逐步解释其实现方式和注意事项。

I. Poco线程池的概念在多线程编程过程中,手动管理线程的创建、销毁和资源分配,会增加代码的复杂性并降低程序性能。

Poco线程池可以在应用程序中管理线程的生命周期,并且可以控制并发执行的任务数量。

简而言之,Poco 线程池是一种重用线程的机制,可以加速任务的执行并减少资源消耗。

II. 创建Poco线程池在使用Poco线程池之前,需要先创建一个线程池对象。

可以调用Poco::ThreadPool构造函数创建一个线程池对象,如下所示:Poco::ThreadPool threadPool(minCapacity, maxCapacity, idleTime,stackSize);其中,minCapacity是线程池的最小容量,maxCapacity是最大容量,idleTime是线程的空闲时间(以毫秒为单位),stackSize是线程栈的大小(以字节为单位)。

III. 向线程池添加任务一旦创建了线程池,就可以向其中添加任务。

任务使用Poco::Runnable接口表示,该接口要求实现run()函数,用于指定要在线程中执行的任务。

可以通过Poco线程池对象的start()函数将任务添加到线程池中,如下所示:threadPool.start(runnable);其中,runnable是实现了Poco::Runnable接口的具体任务对象,可以通过继承Poco::Runnable类或者实现Poco::Runnable接口来创建。

IV. 控制任务数量一个常见的问题是如何控制在线程池中并发执行的任务数量。

Poco线程池提供了一种简单的方法来限制任务的数量,通过设置线程池的最大容量来实现。

POCO文档翻译:POCOC++库入门指南

POCO文档翻译:POCOC++库入门指南

POCO⽂档翻译:POCOC++库⼊门指南内容⽬录介绍POCO C++库是⼀组开源C++类库的集合,它们简化及加速了⽤C++来开发以⽹络功能为核⼼的可移植程序的过程。

这些库,完美地与C++标准库结合到⼀起,并且填补了它所留下的那些空缺。

它们具有模块化、⾼效的设计与实现,使得POCO C++库特别适合于进⾏嵌⼊式开发。

⽽这是C++编程语⾔正在变得越来越流⾏的领域,因为,它既能进⾏底层(设备I/O、中断处理,等等)的开发,也能进⾏⾼级的⾯向对象的开发。

当然,POCO也已经准备好⾯对企业级开发的挑战了。

POCO由4个核⼼库及若⼲个附加库组成。

核⼼库是:Foundation、XML、Util和Net。

其中的两个附加库是:NetSSL,为Net 库中的⽹络类提供SSL ⽀持;Data,⽤来以统⼀的形式访问不同的SQL 数据库。

POCO致⼒于进⾏以⽹络功能为核⼼的跨平台C++软件的开发,可以类⽐于Ruby on Rails对于Web开发的作⽤——⼀个功能强⼤⽽⼜简单易⽤的平台,⽤来构建妳⾃⼰的应⽤程序。

POCO是严格围绕标准ANSI/ISO C++来开发的,并且⽀持标准库。

贡献者们努⼒地达到以下要素之间的平衡:使⽤⾼级的C++特性;保持那些类的可理解性;保持代码的⼲净、⼀致及易维护性。

Foundation库POCO提供了⼀些类,⽤于处理多种变种中的⽇期及时间。

对于⽂件系统访问功能, POCO提供了和类,以及类。

在狠多程序中,某个部分需要向其它部分告知某些事件发⽣了。

POCO提供了、和事件 (类似于 C#事件) 来简化这个过程。

以下⽰例展⽰了 POCO事件的⽤法。

在这个⽰例中,类 Source 拥有⼀个公有事件,名为 theEvent ,它有⼀个参数,类型为 int 。

订阅者可以通过调⽤ operator +=来订阅,调⽤ operator -= 来取消订阅,并且要传⼊两个参数:指向某个对象的⼀个指针;以及,指向某个成员函数的指针。

poco库使用手册

poco库使用手册

POCO库是一个强大的跨平台C++库,可用于编写多平台的网络应用程序。

该库支持多种平台,包括桌面端、服务端、移动端、物联网和嵌入式系统等。

使用POCO库可以带来许多优势。

首先,它支持跨平台,这意味着您编写的应用程序可以在多个平台上运行而无需修改代码。

其次,POCO库具有出色的性能表现,它经过优化以提供高效的内存管理和网络通信。

此外,POCO库还具有易于使用的API,使得开发人员可以轻松地集成到项目中。

POCO库的功能非常丰富,包括数据存储、网络编程、多线程处理、日志记录和XML 解析等。

这些功能可以帮助您快速构建功能强大的应用程序。

此外,POCO库还提供了灵活的模块化设计,使您可以根据需要仅包含所需的模块,从而减小应用程序的大小。

总之,POCO库是一个功能强大、易于使用且跨平台的C++库,非常适合开发人员构建多平台的网络应用程序。

使用POCO库可以加速开发过程,提高应用程序的性能和可靠性。

poco c++ 编译

poco c++ 编译

Poco C++是一个轻量级的C++类库,提供了丰富的组件和工具,用于开发网络应用、多线程应用、数据库应用等。

下面是使用Poco C++编译的一般步骤:
1. 安装Poco C++库:首先,你需要从Poco官方网站下载并安装Poco C++库。

按照官方文档的说明进行安装。

2. 创建源文件:创建你的C++源代码文件,例如`main.cpp`。

3. 编写代码:在源文件中编写你的C++代码,使用Poco C++库的功能。

例如,你可以包含Poco相关的头文件,并在代码中使用Poco提供的类和函数。

4. 编译源文件:打开命令行终端,进入到源文件所在的目录。

然后使用编译器(如
g++)将源文件编译成可执行文件。

例如,使用以下命令进行编译:
```
g++ -o myapp main.cpp -lPocoFoundation
```
这里假设你的源文件是`main.cpp`,编译生成的可执行文件名为`myapp`,并链接Poco Foundation库。

5. 运行程序:编译成功后,使用以下命令运行生成的可执行文件:
```
./myapp
```
这将执行你的程序,并输出相应的结果。

请注意,上述步骤只是一个基本示例,具体的编译过程可能会根据你的项目需求和开发环境而有所不同。

你还可以参考Poco官方文档和示例代码,以获得更详细的指导和帮助。

POCO库中文编程参考指南(10)如何使用TCPServer框架?

POCO库中文编程参考指南(10)如何使用TCPServer框架?

POCO库中文编程参考指南(10)如何使用TCPServer框架?
2.1 创建一个PoechantTCPServer
或许你还不熟悉POCO 中的Application,没关系,这不影响本文的叙述。

下面先创建一个ServerApplication 如下:
2.2 PoechantTCPConnection
连接类的定义很简单,构造函数要传入一个StreamSocket 和其他你需要的参数。

实现如下:
2.3 PoechantTCPConnectionFactory
工厂模式不必多说,名字唬人,其实非常非常简单(准确的说设计模式大部分名字都唬人,但大部分都很有用,设计模式本身并不牛B,能把设计模式抽象提炼出来成我们现在认为很简单的这些模式的那几个人很牛B)。

具体如下:
然后写一个程序入口:
TCPServer 要用TCP 的客户端来测试。

在POCO 中有丰富的Socket,其中TCP 方式的Socket 有:
UDP 方式的Socket 有:
一个TCP 方式Client 如下(这里用了while 循环,其实可以在收到数据后就关闭的)
-。

C网络编程库比较BoostAsioPococpprestsdk的对比

C网络编程库比较BoostAsioPococpprestsdk的对比

C网络编程库比较BoostAsioPococpprestsdk的对比C网络编程库比较Boost.Asio、Poco、cpprestsdk的对比1. 简介网络编程是现代软件开发中不可或缺的一部分,它涉及到通过网络进行通信和数据交换的技术。

在C++开发中,有许多网络编程库可供选择,其中最为常见的就是Boost.Asio、Poco和cpprestsdk。

本文将对这三个网络编程库进行比较,以便读者能够更好地选择适合自己的项目的网络编程库。

2. Boost.AsioBoost.Asio是一款功能强大的C++网络编程库,它是Boost库的一部分。

Boost.Asio提供了面向对象的接口,支持同步和异步操作,可以轻松实现服务器和客户端的开发。

Boost.Asio的主要优点如下:- 提供了丰富的网络编程功能,包括TCP、UDP、SSL等。

- 基于回调机制实现异步操作,提高了程序的并发性能。

- 具有良好的可移植性和跨平台性,可以在不同的操作系统上运行。

3. PocoPoco是另一款流行的C++网络编程库,它提供了一套简单易用的类库和工具,用于快速开发网络应用程序。

Poco的主要特点如下:- 提供了一套完整的网络编程框架,支持TCP、UDP、HTTP等协议。

- 支持多线程操作,可以有效地管理并发连接。

- 具有丰富的功能库,如数据库访问、XML处理等。

4. cpprestsdkcpprestsdk是Microsoft开发的现代C++网络编程库,它旨在简化异步网络编程的开发。

cpprestsdk的主要特点如下:- 基于异步编程模型,提供了方便的编程接口。

- 支持HTTP和WebSocket等协议,适用于开发Web应用程序。

- 具有良好的可扩展性和灵活性,可以根据项目需求进行定制。

5. 对比分析下面对Boost.Asio、Poco和cpprestsdk进行对比分析,以便更好地选择适合项目需求的网络编程库。

- 功能丰富程度:Boost.Asio提供了最为丰富的网络编程功能,支持多种协议和加密算法。

airtest poco 原理

airtest poco 原理

airtest poco 原理
Airtest Poco是一个用于UI自动化测试的开源框架,其原理是
通过Poco库获取和操作游戏或应用的UI元素。

1. Poco库:Poco是一个基于Python的库,用于在安卓和iOS
设备上识别和操作UI元素。

它使用了设备的ADB(Android Debug Bridge)和iOS的私有库来实现对UI的访问。

2. 设备连接:Airtest Poco需要将设备连接到电脑上,可以通
过USB连接到Android设备,或通过Wi-Fi连接到iOS设备。

3. 元素定位:通过Poco库提供的API,我们可以定位到游戏
或应用的UI元素。

Poco提供了一些方法来查找元素,例如根
据名称、文本、资源ID等属性进行查找。

4. 操作元素:一旦找到了所需的元素,我们可以使用Poco提
供的方法进行操作,例如点击、滑动、输入等。

5. 断言和验证:Airtest Poco还支持一些断言和验证功能,用
于判断测试结果是否符合预期。

例如,可以通过检查特定文本是否在某个元素中出现来验证页面加载是否正确。

总体来说,Airtest Poco通过调用Poco库提供的API来实现对
游戏或应用UI元素的定位和操作,从而实现UI自动化测试
的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

The POCO C++ LibrariesOverviewVersion 1.3Purpose of This DocumentThis document gives an overview of the POCO C++ Libraries, a collection of class libraries and frameworks that greatly simplifies the development of network-centric and platform-independent applications in C++.The document is targeted at developers and development/technical managers wanting to get an overview of the functionality and features offered by the POCO C++ Libraries. Familiarity with the C++ programming language is assumed.Validity of This DocumentThis document covers release 1.3 and later releases of the POCO C++ Libraries. Copyright, Trademarks, DisclaimerCopyright © 2006-2010, Applied Informatics. All rights reserved.All trademarks or registered marks in this document belong to their respective owners. Information in this document is subject to change without notice and does not represent a commitment on the part of Applied Informatics. This document is provided "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the particular purpose. Applied Informatics reserves the right to make improvements and/or changes to this document or the products described herein at any time.Table of Contents1 Introduction (4)2 Libraries and Frameworks (5)2.1 The Foundation Library 7 2.1.1 Core 7 2.1.2 Streams 8 2.1.3 Threading 8 2.1.4 DateTime 9 2.1.5 Filesystem 9 2.1.6 Logging 9 2.1.7 Processes 9 2.1.8 Shared Libraries 9 2.1.9 Notifications 9 2.1.10 Events 10 2.1.11 Crypt 10 2.1.12 Text 10 2.1.13 Regular Expressions 10 2.1.14 URI 10 2.1.15 UUID 10 2.1.16 Cache 10 2.2 The Net Library 11 2.2.1 NetCore 11 2.2.2 Sockets 11 2.2.3 Reactor 12 2.2.4 MIME Messages 12 2.2.5 HTTP 12 2.2.6 FTP 12 2.2.7 Mail 12 2.2.8 HTML 12 2.3 The NetSSL Library 12 2.4 The XML Library 12 2.4.1 SAX2 13 2.4.2 DOM 13 2.4.3 XMLWriter 13 2.5 The Util Library 13 2.5.1 Configuration Files 13 2.5.2 Command Line Options 14 2.5.3 Tools and Server Applications 14 2.6 The Data Library 14 2.7 The Crypto and NetSSL Libraries 14 2.8 The Zip Library 152.9 The C++ Server Page Compiler 153 Portability and Platforms (16)3.1 Supported Platforms 16 3.2 Porting 16 3.2.1 Target Platform Requirements 16 3.2.2 C++ Compiler Requirements 171IntroductionThis document gives an overview of the Applied Informatics POCO C++Libraries. The POCO C++ Libraries are a collection of open-source classlibraries that simplify the development of network-centric, portableapplications in C++. The libraries integrate perfectly with the C++ StandardLibrary and fill many of the functional gaps left open by it. Their modularand efficient design and implementation makes the POCO C++ Librariesextremely well suited for embedded development, an area where the C++programming language is becoming increasingly popular, due to itssuitability for both low-level (device I/O, interrupt handlers, etc.) and high-level object-oriented development.The POCO C++ Libraries help developers to focus on the unique corefeatures of the product they are developing – the features that will ultimatelysell the product. By reusing the tried and tested components provided by thePOCO C++ Libraries, developers do not need to waste valuable time andresources re-inventing the wheel.The classes provided by the Applied Informatics POCO C++ Librariesprovide support for multi-threading, streams, accessing the filesystem,shared libraries and class loading, configuration file and command linehandling, security, network programming (TCP/IP sockets, HTTP, FTP,SMTP, SSL/TLS, etc.), XML parsing (SAX2 and DOM) and generation, aswell as SQL database access.2Libraries and FrameworksThe POCO C++ Libraries consist of a number of tried and tested classlibraries and frameworks that greatly simplify the development of portable,network-centric C++ applications. While the POCO C++ Libraries alsosupport typical desktop and server platforms (Windows, Mac OS X, Linux,Solaris, HP-UX, Tru64 and OpenVMS), they are extremely well suited forembedded platforms, such as Embedded Linux, QNX or Windows CE. ThePOCO C++ Libraries have been designed so that they allow you to take outonly those components needed for your particular application – there is noneed to always embed the overhead of the entire package to your applicationunless you really need it.Figure 1 gives a coarse overview of the architecture of the POCO C++Libraries. The heart of the POCO C++ Libraries is the Foundation library.Among other useful classes and frameworks, the Foundation libraryprovides numerous classes that shield the programmer from the underlyingoperating system application programming interface (API), and thus enabletrue cross-platform programming in a write once – compile anywhere sense.The POCO C++ Libraries include a deliberately thin platform abstractionlayer that is extremely well suited for embedded platforms, putting only verylittle overhead between your software and the target hardware.Figure 1 POCO C++ Libraries OverviewBuilt upon the Foundation library are various libraries providing higher-level functions. The Net library provides implementations of variousnetwork protocols and servers like HTTP, FTP, SMTP and others. The XMLlibrary provides an XML parser and writer, supporting the industry-standard SAX2 (Simple API for XML, Version 2) and DOM (DocumentObject Model) interface specifications. The Util library offers classes for processing configuration files and command line arguments, as well as a framework for creating server applications, implemented as Unix daemons or Windows services. Finally, the Data library provides a unified interface to different SQL database engines (SQLite, MySQL, ODBC).The POCO C++ Libraries are entirely based on the C++ standard library, including the Standard Template Library (STL). Therefore, unlike many other libraries, the POCO C++ Libraries do not bring in their own string and collection classes, which eases their integration into your own projects. However, extensive use of STL classes can lead to increased code size, due to code duplication caused by template instantiations. To avoid code bloat, the POCO C++ Libraries only use a subset of the classes provided by the C++ standard library – strings, I/O streams and some of the container classes. Some C++ compilers for embedded platforms bring their own customized versions of the C++ standard library, containing only a subset of the functionality defined by the standard, with the goal of reducing the memory footprint of the library. It is possible to use the POCO C++ Libraries with these restricted libraries (although restrictions might apply, depending on what is provided by the actual standard library implementation).The POCO C++ Libraries consistently use C++ exceptions for error handling, thus making life easier for developers. Without exceptions, error handling is often done insufficiently (for example, function return values denoting success or failure are often ignored), leading to hard-to-track-down bugs. With modern C++ compilers, the runtime overhead caused by exception handling is minimal, and the advantages of exception handling far outweigh its costs. Consequent use of exceptions leads to more stable and better maintainable code.2.1The Foundation LibraryThe Foundation library is the heart of the POCO C++ Libraries. Figure 2gives an overview of its components.Figure 2 The Foundation libraryThe various components and the functionality they provide are outlined inthe following.2.1.1CoreThe Core component, as its name implies, provides the most basicfunctionality of the Foundation library. It consists of five subcomponentsthat provide the following services:2.1.1.1Platform AbstractionIncluded in the platform abstraction layer are platform-independent fixed-size data types (8, 16, 32 and 64 bit signed and unsigned integers), utilityclasses for converting between big-endian and little-endian integers,mechanisms for getting information about the operating system platform,and an interface to the system debugger.2.1.1.2Memory ManagementThis subcomponent includes a smart pointer and a shared pointer templateclass that implements reference counting-based garbage collection and atemplate class that simplifies the proper instantiation and destruction ofsingleton objects.2.1.1.3String UtilitiesHandy functions for case-insensitive string comparison, case conversion,whitespace removal, character transformation and concatenation, as well asa string tokenizer class.2.1.1.4Error HandlingClasses, functions and macros for error handling, including variousexception classes and useful macros for assertions and null pointer checksthat enable you to write self-testing code. On some platforms, the library canbe configured to automatically break into the debugger when an assertion isviolated. The POCO C++ Libraries themselves make extensive use ofassertions, allowing you to find subtle bugs in your code (for example,invalid method parameters or missing initializations) as soon as possible.Also, a special debug mode is supported where additional runtime checksare enabled.2.1.2StreamsThe Streams component provides various I/O stream and correspondingstream buffer classes, including base classes that make implementing yourown custom stream and stream buffer classes much easier. All stream classesare based on and fully compatible with the standard I/O streams provided bythe C++ Standard Library. Included are base classes for buffered andunbuffered streams, encoders that encode binary data in Base64 or hex-binary encoding (suitable for embedding binary data in XML documents ore-mail messages) and the corresponding decoders, a stream countingcharacters, lines and column numbers, as well as stream-based datacompression/decompression based on the popular open source zlib datacompression library.2.1.3ThreadingWriting multithreaded code is hard. The platform independent classes forcreating and managing threads, synchronizing threads (mutexes, events,reader/writer locks and semaphores), thread pool management and timersconsiderably simplify this task. A common programming error inmultithreaded code is to forget to unlock a mutex that has been lockedearlier in the code (for example, if a block is exited in the middle due to anexception or a "hidden" return statement). The scoped lock classes providedby the threading library ensure that mutexes are always properly unlockedwhen the program block where they have been locked is left. They thereforehelp to avoid a common source for deadlocks in multithreaded applications.The multithreading classes also support the concept of active objects. Anactive object has methods that automatically execute in their own threads.Examples are activities– long running methods that perform backgroundtasks and active methods– methods that execute asynchronously to theircaller. Active objects relieve the programmer from thread managementissues and help to reduce the complexity of multithreaded code.2.1.4DateTimeTimestamp and stopwatch classes for time keeping and measurement withup to microsecond (64-bit) accuracy. The actual time resolution depends onthe underlying operating system platform. Classes for working with timespans and time zones and a class for working with calendar dates.2.1.5FilesystemEasy to use classes for working with paths, files and directories in a platformindependent manner. A directory iterator class that allows iteration over thefiles in a directory in C++ style. A path class that supports all commonlyused notation styles for paths (Unix, Windows, OpenVMS). Classes thatsimplify working with temporary files. A Glob class for finding files usingUnix-style patterns.2.1.6LoggingLogging is a valuable debugging aid especially for multithreadedapplications. The Foundation library provides a powerful and extensiblelogging framework that is unobtrusive to use. The framework supports avariety of different log destinations (console, log files, Unix Syslog, WindowsEvent Log, remote logging, etc.). Based on a concept of cascaded logchannels, filters and message formatters and configurable bothprogrammatically and via configuration files.2.1.7ProcessesCreation and management of processes, as well as synchronization amongcooperating processes in the form of global mutexes and global events. Alsoprovided are classes for working with shared memory, the fastest method ofinter-process communication.2.1.8Shared LibrariesClasses for working with shared libraries in a platform independent way.Including a template-based class loader that loads C++ classes dynamicallyat runtime from shared libraries, similarly to the class loader available inJava. This class loader frees a developer from many of the burdens whenbuilding plug-in architectures for applications.2.1.9NotificationsFacilities for type-safe sending and delivery of notification objects within asingle thread or from one thread to another, also well suited for theimplementation of notification mechanisms. A notification queue class fordistributing tasks to worker threads, simplifying the implementation ofmultithreaded servers.2.1.10EventsSupport for both synchronous and asynchronous event notifications.Similar in style to the event mechanism in C# and thus easy to use.2.1.11CryptImplementations of various message digest algorithms (MD2, MD4, MD5,SHA-1) that work on streams or buffers, an implementation of the popularHMAC message signature algorithm as well as random number and randomdata generation.2.1.12TextClasses for working with text in various encodings (ASCII, ISO Latin-1,UTF-8, UTF-16, etc.), as well as for converting text between encodings thatwork with the standard C++ string and I/O stream classes.2.1.13Regular ExpressionsPerl-compatible regular expressions, based on the popular open sourcePCRE library and wrapped in an intuitive to use class.2.1.14URIClasses for working with Uniform Resource Identifiers (URIs), including anURIStreamOpener class.2.1.15UUIDClasses for cross-platform UUID (Universally Unique Identifier)manipulation and generation (time-based, name-based and random-based).2.1.16CacheA framework for implementing caches with various expiration strategies.2.2The Net LibraryThe Net library contains a variety of classes for network programming. BasicTCP/IP sockets, as well as higher level network protocols are supported.Figure 3 gives an overview of the Net library.Figure 3 The Net libraryMany embedded devices already have Ethernet network interfaces andsupport the TCP/IP protocol. Configuration, maintenance and monitoringfunctions for such devices can often be provided via a browser-based Webinterface. Furthermore, many embedded devices will soon need to provideWeb service interfaces, based on the Simple Object Access Protocol (SOAP)and HTTP. The classes provided by the Net library provide most of thebuilding blocks required to implement such a functionality.2.2.1NetCoreThe NetCore classes provide the core functionality needed in every networkapplication, such as handling of network addresses, and network nameresolution (DNS).2.2.2SocketsThe socket classes provided by the POCO C++ Libraries take care of all the(often overlooked) subtleties that need to be dealt with when working withthe Berkeley socket API, the industry's standard API for TCP/IPprogramming. Available are classes for TCP (stream) and UDP (datagram)sockets, TCP and UDP listeners and a multithreaded TCP server.Furthermore, support is provided for IPv4 and IPv6, as well as UDPbroadcast and multicast. The TCP server, as well as network stream classesthat work with sockets simplify the development of applications that providea Telnet (RFC 854) text-based user interface.2.2.3ReactorSupport for the popular Reactor, Acceptor and Connector patterns usefulfor high-performance network applications.2.2.4MIME MessagesClasses for dealing with MIME (Multipart Internet Mail Extensions, RFC2045 and RFC 2387) multi-part messages.2.2.5HTTPA HTTP (Hyper Text Transfer Protocol, RFC 2616) client library, as well asan extensible, multithreaded HTTP server framework are. Both the serverand the client support HTTP 1.0 and HTTP 1.1.2.2.6FTPA FTP (File Transfer Protocol, RFC 959) client for file transfer applications.2.2.7MailClasses for sending e-mail messages via SMTP (Simple Mail TransferProtocol, RFC 2821) servers with support for e-mail attachments, as well asclasses for downloading e-mail messages from POP3 (Post Office ProtocolVersion 3, RFC 1939) servers.2.2.8HTMLClasses for working with HTML forms on both the client and the server side.Included is support for HTTP file uploads.2.3The NetSSL LibraryThe NetSSL library extends the Net library with support for secure,encrypted communication based on SSL (Secure Sockets Layer) and TLS(Transport Layer Security).2.4The XML LibraryThe eXtensible Markup Language (XML) library provides classes andframeworks for reading and writing XML data. The XML parser is based onthe well-known open source Expat parser. On top of that parser sits a thinand lightweight layer that implements a C++ adoption of the SAX2 (SimpleAPI for XML, version 2) interface for event-based XML parsing. A DOM(Document Object Model) implementation is provided for document-basedXML manipulation. The DOM implementation has been optimized for lowmemory footprint. It provides a complete implementation of the DOMLevel 2 Events specification, making it suitable for interactive applications.The XML parser is non-validating, which is a good choice for embeddedplatforms, as fully validating parsers have a considerable higher runtime andmemory overhead.2.4.1SAX2The POCO C++ Libraries XML parser fully implements the SAX2specification for event-based XML parsing. Also supported are most of theoptional SAX2 Extensions (1.0 and 1.1). While the SAX2 interface issomewhat less convenient to use when compared with DOM, SAX2 is theinterface of choice for efficient parsing of XML data and if the availablememory is limited.2.4.2DOMThe DOM interface is suitable for in-memory storage and manipulation ofXML data. Its implementation has been optimized for a lowest possiblememory footprint (while not sacrificing performance) and the DOM Level 2Events specification is fully supported, making the DOM implementationsuitable for interactive applications.The DOM implementation provided by the POCO C++ Libraries XMLlibrary adheres to the following W3C specifications:•Document Object Model Level 1•Document Object Model Level 2 Core•Document Object Model Level 2 Events•Document Object Model Level 2 Traversal and Range2.4.3XMLWriterThe XML writer class simplifies the creation of XML data. Based on theSAX2 interfaces, it supports namespaces and formatted output in additionto ensuring that the written XML is well formed. Different text encodingsare supported.2.5The Util LibraryThe POCO C++ Libraries Utilities library makes available classes forworking with configuration files and command line arguments, as well as aframework for building command line tools and server applications.2.5.1Configuration FilesThe Util library supports unified handling of configuration files in variousformats. The supported configuration file formats are Java-style propertyfiles, Windows-style initialization (.ini) files and XML files. Regardless of thefile format, the interface for accessing the configuration data is always thesame. Also available are mechanisms to combine configuration data frommultiple sources. The framework can easily be extended with support fornew configuration data sources, for example a database or the Windowsregistry.2.5.2Command Line OptionsAlso contained in the Util library are classes for platform-independenthandling of command line options. The POCO C++ Libraries enable thecreation of applications that work on different operating system platforms.Users on different platforms, however, expect to specify command lineoptions in different, platform-specific ways. For example, users on Unixplatforms expect to specify options using a dash (-) or double-dash (--)syntax. On the other hand, users on Windows or OpenVMS platformsexpect to specify options using a slash (/) syntax. The classes for commandline option handling automatically recognize options in the appropriatesyntax for the respective platform, thus ensuring a consistent userexperience on every supported platform. Furthermore, the classes take careof handling duplicate, incompatible or ambiguously specified optionsappropriately, thus saving the developer tedious work.2.5.3Tools and Server ApplicationsLast but not least the Util library provides a framework for writingcommand line based tools or server applications. A server application istypically expected to run as a daemon process on a Unix platform, or as aservice on a Windows platform. The application framework classes in theUtil library implement the necessary glue code to achieve this transparently,allowing the same executable to run either from the command line, or as adaemon or service.2.6The Data LibraryThe Data library provides unified access to various SQL database engineslike SQLite, MySQL and databases available through ODBC. A powerfulprogramming model allows embedding SQL queries into C++ code.Automatic mapping between C++ types, C++ objects and database columnsis provided as well.2.7The Crypto and NetSSL LibrariesThe Crypto and NetSSL libraries provide cryptography and SSL/TLSsupport, based on the OpenSSL library. The Crypto library provides classesfor handling X509 certificates, for encrypting and decrypting data usingOpenSSL ciphers, and for working with RSA. The NetSSL libraryimplements secure sockets for SSL/TLS, as well as HTTPS support.2.8The Zip LibraryThe Zip library provides classes for creating, manipulating and extractingfiles from Zip archive files.2.9The C++ Server Page CompilerPage Compiler is a command line tool that translates HTML files (and otherkinds of files) into C++ classes for use with the HTTP server provided by theNet library. The source files can contain special directives that allowembedding of C++ code. The syntax of these directives is based on thesyntax used for Java Server Pages (JSP) and Active Server Pages (ASP). Thismakes it very easy to build web applications in C++ with the POCO C++Libraries.3Portability and PlatformsThe Applied Informatics POCO C++ Libraries are available on a variety ofplatforms. The platform-dependent and platform-independent parts of thelibrary have been clearly separated, which makes porting the library to newplatforms a relatively easy task. An extensive test suite ensures thateverything works as expected on a new platform.3.1Supported PlatformsAll major desktop and server platforms are readily supported, includingWindows, Mac OS X, Linux, HP-UX, Tru64, Solaris and AIX in addition toEmbedded Linux, Windows CE and QNX.3.2PortingPorting the POCO C++ Libraries to a new platform can be done by yourself,with optional support from Applied Informatics' developer team.Alternatively, Applied Informatics can be contracted to do the completeporting to a platform of your choice.3.2.1Target Platform RequirementsTarget platforms for the POCO C++ Libraries must meet the followingminimum requirements:• a 32-bit CPU•at least 4 MB of memory available for application code•optional FPU (or software-based floating point support)• a TCP/IP stack for the Net library•multithreading support for the threads and synchronization classes•filesystem support is required for certain compoments• a standard conforming C++ compiler; see next section3.2.2C++ Compiler RequirementsTo successfully build the POCO C++ Libraries, a C++ compiler must meetthe following requirements:•full ISO/IEC 14882 standards compliance (including templates,exception handling, runtime type identification)• a conforming implementation of the C++ standard library, includingthe STL (minimum: strings, I/O streams and containers/iterators) Following is an incomplete list of compilers (and platforms) known to workwith the Applied Informatics POCO C++ Libraries:•Microsoft Visual C++ 13.10 and 14.0 (Windows 2000/XP/CE)•GCC 3.3-20030314 (Mac OS X 10.3)•GCC 4.0 (Mac OS X 10.4)•GCC 3.3.1 (Linux 2.4.21, QNX Neutrino 6.3)•GCC 3.4.1 (Linux 2.4.21 and 2.6.3)•Sun ONE Studio 8 C++ (Solaris 9)•Compaq C++ 6.5-004 (OpenVMS 7.3)•Compaq C++ 6.5-040 (HP Tru64 5.1b)•HP ANSI C++ A.03.57 (HP-UX 11.11 PA-RISC)•HP ANSI C++ A.06.00 (HP-UX 11.23 IA64)。

相关文档
最新文档