首页 > 其他分享 >跨平台库--PWLib入门

跨平台库--PWLib入门

时间:2023-06-11 19:56:08浏览次数:47  
标签:PWLib 协议 -- PProcess 跨平台 线程 基类 描述

PWLib是Portable Windows Library的缩写,翻译为轻便的Windows类库.PWLib采用C++编写,设计初衷是为了能让Openh323在Windows和Unix的X-Windows下运行, 不过随着一步步的完善PWLib已经被跨平台的程序所广泛采用.在最新的Pandora版本中,Equivalence已经停止了PWLib中GUI部分的开发,全面转向了更能为Openh323所利用的PTLib,GUI部分交给了wxWindows来完成.PWLib主要功能侧向网络,I/O和多线程,主要用在高性能的可移植网络程序.


PWLib分为两部分:基类部分和控制台部分.基类部分主要包括网络,多线程,ASN等...,所有使用PWLib的应用程序必然用到基类部分.而控制台部分则定义了一些基本的数据和设备类型,它是可选的,不过要方便移植的话还是要用到它.
下面从Hello World开始说PWLib框架:
#include <ptlib.h>                        //所用使用PWLib都用包含的头文件


class Hello : public PProcess          //继承主线程类PProcess
{
  PCLASSINFO(Hello, PProcess)     //连接PProcess的运行时函数
  public:
        void Main();                          //主线程是从PProcess的Main()开始的
};


PCREATE_PROCESS(Hello)           //定义Main()函数和初始化Hello类


void Hello::Main()
{
  cout << "Hello world!\n";     
}
下面详细介绍各个类:
基本对象类:
PObject - PWLib中的根类,所有的类都派生于此 
PContainer - 抽象容器类
PAbstractArray - 所有数组对象的基类
PAbstractList - 所有列表对象的基类 
PAbstractDictionary - 字典对象的基类
PString - 字符类,在Openh323中随处可见


I/O通道类 
PChannel - I/O通道的基类,下面类都派生于此
PIndirectChannel - 可以交换的操作不同的I/O通道
PConsoleChannel - 进入系统命令行的通道 
PPipeChannel - 在当前进程和子进程剪建立管道 
PSerialChannel - 串口通信通道 
PFile - 文件操作类.
PTextFile - 文本文件操作类
PStructuredFile - 结构文件操作类,不同操作文件类型都不尽相同
PFilePath -对文件的路径描述的类
PVideoChannel - 视频的输入,输出通道,采用YUV格式
PSoundChannel - 音频的输入,输出通道,使用线性的PCM通道


套接字类: 
PSocket - 套接字的基类,所有网络操作类派生于此 
PIPSocket - IP协议层的描述类 
PUDPSocket - IP协议中UDP描述类 
PTCPSocket - IP协议中TCP/IP描述类  
PICMPSocket - IP协议中ICMP描述类 
PIPXSocket - IPX协议的基类
PEthSocket - 底层的以为网接口类,可以直接操作底层数据包


进程和线程类:  
PProcess - 实现程序的主线程控制类 
PServiceProcess - 后台程序或系统进程使用的类 
PThread - 普通线程的控制类 
PSemaphore - 使用信号量的线程同步类
PMutex - 使用互斥对象的线程同步类
PCriticalSection - 使用临界区的线程同步类
PSyncPoint - 使用事件的线程同步类
PAtomicInteger - 描述了信号量及PV操作


其他杂类:
PArgList - 命令行参数类 
PConfig - 存储应用程序的配置内容 
PTime - 时间和日期的抽象类 
PTimeInterval - 以毫秒为单位的记时类
PDynaLink - 动态连接类
PRemoteConnection - 网络连接控制类
PMail - 调用系统默认程序发邮件
PPluginManager - 插件管理模块
PSmartPointer - 智能指令类 
PNotifier - 通告类,可以调用任何类的任何函数
PSmartNotifierFunction - 智能的通告函数类,使用对象ID


控制台部分:


HTTP协议类:
PHTTP - HTTP协议基类
PURL - URL的具体描述
PHTML - HTML的具体描述
PHTTPServiceProcess - 后台的HTTP服务程序类


其他协议类 
PInternetProtocol - Interner文本协议基类 
PPOP3 - POP3协议的基类
PSMTMP - SMTP协议的基类
PFTP - FTP协议的基类
PMIMEInfo - 描述MIME信息
PTelnetSocket - 描述TELNET协议 
PSocksProtocol - Socks协议的基类
PSTUNClient - 实现STUN登陆操作
PSNMP - SNMP协议的基类
PSSLChannel - 在OpenSSL基础上建立的SSL协议类
PSASL - 在Cyrus SASL基础上建立的SAS协议L类
PXMLRPC - 在XML和HTTP基础上建立的XMLRPC协议描述 
PSOAPClient - 实现SOAP登陆
PLDAPSession - 使用OpenLDAP进行LDAP登陆 
PILSSession - 使用OpenLDAP进行ILS登陆
XMPP::Stream - 实现XMPP(Jabber)流


其他杂类:
PModem -操作Modem,使用AT命令和Modem串口通信
PIpAccessControlList - 子网掩码的描述
PRandom - 产生随机数类
PCypher - 不同编码的解码和编码
PWAVFile - AIFF格式的WAV文件操作类 
PDTMFDecoder - 对PCM流进行DTMF解码 
PMemoryFile - 让数据存储在内存中
PSDLVideoDevice - 使用SDL库实现视频设备
PXML - XML的解析器
PVXMLChannel - VXML的解析器

标签:PWLib,协议,--,PProcess,跨平台,线程,基类,描述
From: https://www.cnblogs.com/cnhk19/p/17473465.html

相关文章

  • 力扣---875. 爱吃香蕉的珂珂
    珂珂喜欢吃香蕉。这里有n堆香蕉,第i堆中有 piles[i] 根香蕉。警卫已经离开了,将在h小时后回来。珂珂可以决定她吃香蕉的速度k(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉k根。如果这堆香蕉少于k根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 ......
  • 周报_第五周
    学习时间:2023.6.5-2023.6.11一、完成内容1.学习《动手学深度学习Pytorch版》的8、9、10章(最后一节Transformer没看),以及部分代码的复现.二、下周计划1.补上第10章的最后一节。1.学习《动手学深度学习Pytorch版》的第11、12、13章.......
  • Docker
    Docker概述1.Docker出现开发-上线两套环境java---jar(环境)打包项目带上环境(镜像)--(Docker仓库:商店)--下载我们发布的镜像--直接运行即可!隔离:Docker核心思想!打包装箱!每个箱子是互相隔离的。2.Docker历史开源基于Go语言官网:https://www.docker.com/文档:https://docs.docker.......
  • WPF控件库之HandyControl
    HandyControl介绍HandyControl是一套WPF控件库,它几乎重写了所有原生样式,同时包含80余款自定义控件(正逐步增加)。安装使用github地址:https://github.com/HandyOrg/HandyControl官网地址:https://handyorg.github.io/......
  • 【信息安全】项目实践:基于LSB(最低有效位)原理的图像隐写
    知识分享什么是隐写?隐写术(Steganography)这一名词早在文艺复兴时期就已出现。很多同学小时候玩过的秘密写字(紫外线照射使字迹显现)也可以说是隐写的一种。而现在的数字隐写术在是信息安全杂项门类下的一个小分支,主要研究将信息隐藏在数字载体中(一般是公开媒介)。信息隐写不仅要......
  • 数据定义
    创建表CREATETABLEEmp(EidCHAR(5)NOTNULL,EnameVARCHAR(10),WorkIDCHAR(3),SalaryNUMERIC(8,2),PHONECHAR(11)NOTNULL);NOTNULL非空VARCHAR(10)变长10,字符CHAR(3)定长3,字符NUMERIC(8,2)8位总数字位数,2位小数位数PRIMARYKEY主键......
  • VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法
    要解决的问题有一个虚拟机运行在VMWareworkstation中,如何让这个虚拟机桥接到宿主机的网络上的某个VLAN?常见使用场景只有一个网口的单臂软路由,同时宿主机为Windows,虚拟机软件为VMwareWorkstation,在虚拟机中运行OpenWrt需要在一个网口上,利用VLAN实现虚拟WAN口上的P......
  • C++ 单例模式的各种坑及最佳实践
    单例模式是设计模式中最简单、常见的一种。其主要目的是确保整个进程中,只有一个类的实例,并且提供一个统一的访问接口。常用于Logger类、通信接口类等。基本原理限制用户直接访问类的构造函数,提供一个统一的public接口获取单例对象。这会有一个“先有鸡还是先有蛋”的问题:......
  • 阿里云镜像仓库(可拉取海外镜像)
    一、开通阿里云镜像服务1、访问 阿里云官网,并找到容器镜像服务。二、创建镜像仓库注意:如果想要拉取海外镜像,需要勾选海外机器构建,如果不需要拉取海外镜像,使用本地仓库也是可以的。三、github仓库示例FROMgcr.io/google-containers/kubernetes-dashboard-amd64@s......
  • 前端——模块化演变过程
    第一阶段——基于文件划分的方式实现模块化文件为独立的模块,在对应位置调用全局成员。缺点:污染全局作用域,命名冲突问题,完全依靠约定。第二阶段——命名空间方式使用全局对象方式实现模块化,解决了命名冲突的问题。缺点:污染全局作用域第三阶段——立即执行函数方式使用立即执行......