GlbLib自研函数库手册

  • 1、系统概述
  • 1.1、系统简介
  • 通用类库针对各系统间在设计实现环节的共性,编写开发了一些通用类。通用类库的主体思路是采用面向对象的编程思想,利用操作系统用户级API函数,封装成对象使用。目的是缩短开发时间,增强代码的复用,并最终提升研发工作的效率。
  • 1.2、系统特点
  • 通用类库的实现全部构建在标准linux操作系统用户级别之上,不依赖任何操作系统以外的第三方库。此外,类库在设计编写阶段考虑到字节长度在操作系统与CPU上的差异,通用库不支持平台移植。
  • 1.3、系统组成
  • 通用类库由三大部分组成,分别是操作对象类、通信对象类和通用对象类。操作对象类里包含各种容器、锁和底层调用;通信对象类包含各种协议与通信模式的操作;通用对象类包含一些经常调用的小函数。
  • 2、操作对象
  • 2.1、布隆对象
  • 布隆对象用于在海量数据中检验目标数据是否存在,通过将数据按位操作在一个连续数据空间中标记的方式得到。数据通过文件的方式被持久化在本地磁盘上,需要的时候以映射的方式加载。
  • 2.1.1、加载布隆
  • int GlbBloomOpen(char* pszFile);
  • 参数为布隆的标识符,通常为一个文件路径,其功能用于创建或打开一个布隆对象。成功返0,失败返回-1。
  • 2.1.2、卸载布隆
  • void GlbBloomClose()
  • 其功能用于关闭一个已经打开的布隆对象。
  • 2.1.3、布隆查找
  • int GlbBloomCheck(UCHAR* puszBloom, UINT uiLength, bool bProc)
  • 第一个参数为待查找数据的标识串,第二个参数为待查找数据标识串的长度,第三个参数为进程共享标识。成功返回0,失败返回-1。该函数用于从已知布隆对象中查找某值是否存在。
  • 2.1.4、布隆更新
  • void GlbBloomUpdate(UCHAR* puszBloom, UINT uiLength, bool bProc)
  • 第一个参数为待查找数据的标识串,第二个参数为待查找数据标识串的长度,第三个参数为进程共享标识。成功返回0,失败返回-1。该函数用于向已知布隆对象中增加某值标识。
  • 2.1.5、布隆赋值
  • void GlbFileMmapPut(UINT uiOffset, UCHAR* puszLine, UINT uiLength, bool bProc)
  • 第一个参数为布隆对象的偏移量,第二个参数为赋值对象标识符,第三个参数为锁定区域尺寸,第四个参数为进程共享标识。成功返回0,失败返回-1。
  • 该函数为虚函数,是类库提供的默认函数,用户可以继承该类,并根据自己的需要重载。该函数应被查找和更新函数调用。
  • 2.1.6、布隆取值
  • void GlbFileMmapGet(UINT uiOffset, UCHAR* puszLine, UINT uiLength, bool bProc)
  • 第一个参数为布隆对象的偏移量,第二个参数为赋值对象标识符,第三个参数为锁定区域尺寸,第四个参数为进程共享标识。成功返回0,失败返回-1。
  • 该函数为虚函数,是类库提供的默认函数,用户可以继承该类,并根据自己的需要重载。该函数应被查找和更新函数调用。
  • 2.2、条件锁
  • 条件锁派生自锁基类,用于在多进程(线程)环境下对公共资源访问的保护。当条件满足时被唤醒运行,否则挂起等待。
  • 2.2.1、初始化
  • int GlbLockMalloc(void* pLock)
  • 参数为条件锁的地址,当地址为空时由系统申请空间,否则使用用户指定空间。成功返回0,失败返回-1。
  • 2.2.2、创建锁
  • int GlbLockCreate(bool bShared)
  • 参数为条件锁属性是否支持进程共享(注:在某些操作系统中支持可能存在差异)。创建成功返回0,失败返回-1。
  • 2.2.3、销毁锁
  • int GlbLockDelete()
  • 该函数用于销毁之前已经创建的锁。
  • 2.2.4、等待锁
  • void GlbCdLockWait()
  • 该函数用于进(线)程中对公共资源访问控制前向锁机制提出资源占用申请。
  • 2.2.5、解除锁
  • void GlbCdLockSignal()
  • 该函数用于进(线)程中对公共资源访问控制后向锁机制提出资源释放申请。
  • 2.3、配置文件
  • 配置文件对象用于从配置文件中读取配置信息。配置文件的格式由配置块组成,每个配置块由配置信息组成,配置信息由键和值组成,用等号连接。行首采用“#”号作为屏蔽符。该对象可以自动识别配置文件中的屏蔽行、空行和键值间的空格。
  • 2.3.1、文件打开
  • int GlbConfOpen(char* pszFile)
  • 参数为配置文件的全额路径,可以是绝对路径,也可以是相对路径。成功返回0,失败返回-1。
  • 2.3.2、文件关闭
  • void GlbConfClose()
  • 关闭一个已经打开的配置文件。
  • 2.3.3、按行读取
  • int GlbConfGetLine(char* pszLine, int iSize)
  • 第一个参数为存放数据的空间,第二个参数为空间长度。该函数的作用是从配置文件中顺序读取一行记录,同时文件指针向后移动。成功返回0,失败返回错误值,错误值详见该对象的头文件。
  • 2.3.4、块查找
  • int GlbConfGetSec(char* pszSec)
  • 参数为块名称。函数作用是在配置文件中查找该块是否存在,成功返回0,失败返回错误值,错误值详见该对象的头文件。
  • 2.3.5、键查找
  • int GlbConfGetKey(char* pszSec, char* pszKey)
  • 第一个参数为块名称,第二个参数为键名称。函数用于在配置文件中在制定块中查找制定键是否存在。成功返回0,失败返回错误值,错误值详见该对象的头文件。
  • 2.3.6、值查找
  • int GlbConfGetVal(char* pszSec, char* pszKey, char* pszVal)
  • 第一个参数为块名称,第二个参数为键名称,第三个参数为值存储空间。函数用于从配置文件中指定块中指定键中提取值。成功返回0,失败返回错误值,错误值详见该对象的头文件。
  • 2.3.7、键值提取
  • int GlbConfKeyValue(char* pszLine, char* pszKey, char* pszVal)
  • 第一个参数为待处理数据,第二个参数为键空间,第三个参数为值空间。函数用于从行中将键值分离并保存到各自空间中。成功返回0,失败返回错误值,错误值详见该对象的头文件。
  • 2.3.8、键值提取
  • int GlbConfKeyValue(char* pszLine, char** ppszKey, char** ppszVal)
  • 第一个参数为待处理数据,第二个参数为键指针,第三个参数为值指针。函数用于从行中将键值分离并用形参指向数据位置。成功返回0,失败返回错误值,错误值详见该对象的头文件。
  • 2.3.9、行验证
  • bool GlbConfIsValid(char* pszLine)
  • 参数为配置文件中行数据。函数用于验证该行是否为有效行。有效返回真,无效返回假。
  • 2.3.10、块验证
  • bool GlbConfIsSection(char* pszLine)
  • 参数为配置文件中行数据。函数用于验证该块是否为有效行。是返回真,否返回假。
  • 2.3.11、删无效符
  • void GlbConfTrim(char* pszLine)
  • 参数为数据行。函数用于删除该行左右两侧的无效符号。符号包括空格、换行符、回车符等。
  • 2.3.12、删左无效符
  • void GlbConfTrimLeft(char* pszLine)
  • 参数为数据行。函数用于删除该行左侧的无效符号。符号包括空格、换行符、回车符等。
  • 2.3.13、删右无效符
  • void GlbConfTrimRight(char* pszLine)
  • 参数为数据行。函数用于删除该行右侧的无效符号。符号包括空格、换行符、回车符等。
  • 2.4、文件对象
  • 文件对象用于提供基本的文件操作,包括文件映射,加锁读写以及二进制文件操作。对象封装了底层文件IO操作。
  • 2.4.1、文件尺寸
  • ULONG GlbFileGetSize()
  • 函数用于获取文件大小。返回值为文件大小。
  • 2.4.2、数据地址
  • void* GlbFileGetFile()
  • 函数获取一个已打开且被成功映射的文件数据内容的地址。返回值为数据地址。
  • 2.4.3、打开文件
  • int GlbFileOpen(char* pszFile, int iFlag)
  • 第一个参数为配置文件路径,第二个参数为文件打开方式。函数用于打开一个已经存在的文件。成功返回0,失败返回-1。
  • 2.4.4、关闭文件
  • void GlbFileClose()
  • 函数用于关闭一个已经打开的文件。
  • 2.4.5、映射文件
  • int GlbFileMmap(int iProt, int iFlag, ULONG ulSize)
  • 第一个参数为映射方式,第二个参数为是否进程共享(该功能在不同的操作系统上可能存在差异),第三个参数为映射尺寸。函数作用为将一个打开的文件进行内存映射。成功返回0,失败返回-1。
  • 2.4.6、解除映射
  • int GlbFileMunmap(ULONG ulSize)
  • 参数为映射尺寸。函数用于将一个已经映射的地址释放。成功返回0,失败返回-1。
  • 2.4.7、创建文件
  • int GlbFileCreate(char* pszFile)
  • 参数为新创建文件的路径。函数用于创建一个新的文件。成功返回0,失败返回-1。
  • 2.4.8、删除文件
  • int GlbFileDelete(char* pszFile)
  • 参数为待删除文件的路径。函数用于删除一个已经存在的文件。成功返回0,失败返回-1。
  • 2.4.9、文件定位
  • ULONG GlbFileLseek(short sWhence, ULONG ulOffset)
  • 第一个参数为文件位置描述,第二个参数为距离该位置的偏移量。函数用于将文件的读写指针移动到用户指定位置。返回值为目标位置距离文件首地址的偏移量。
  • 2.4.10、局部锁定
  • int GlbFileFcntl(short sType, short sWhence, ULONG ulStart, ULONG ulLength, int iCmd)
  • 第一个参数为锁定类型,第二个参数为位置描述,第三个参数为起点位置,第四个参数为重点位置,第五个参数为控制类型。函数用于对文件的指定区域进行读写锁操作。该函数在不同的操作系统上可能存在差异。成功返回0,失败返回-1。
  • 2.4.11、文件读取
  • int GlbFileRead(UCHAR* puszLine, UINT uiLength, bool bProc)
  • 第一个参数为读取数据的存储空间,第二个参数为空间尺寸,第三个参数为共享标识。函数用于从一个已经打开的文件中读取指定长度的数据并保存到用户指定区域中。成功返回读取的实际长度,失败返回-1。
  • 2.4.12、文件写入
  • int GlbFileWrite(UCHAR* puszLine, UINT uiLength, bool bProc)
  • 第一个参数为数据,第二个参数为数据尺寸,第三个参数为共享标识。函数用于向一个已经打开的文件中写入指定长度的数据。成功返回写入的实际长度,失败返回-1。
  • 2.4.13、映射读取
  • void GlbFileMmapGet(ULONG ulOffset, UCHAR* puszLine, UINT uiLength, bool bProc)
  • 第一个参数为映射偏移,第二个参数为数据保存空间,第三个参数为空间长度,第四个参数为共享标识。函数用于从一个已经映射的区域中读取指定长度的数据。
  • 2.4.14、映射写入
  • void GlbFileMmapPut(ULONG ulOffset, UCHAR* puszLine, UINT uiLength, bool bProc)
  • 第一个参数为映射偏移,第二个参数为数据,第三个参数为数据长度,第四个参数为共享标识。函数用于向一个已经映射的区域中写入指定长度的数据,旧数据将被新数据覆盖。
  • 2.4.15、文件生成
  • int GlbFileTruncate(char* pszFile, ULONG ulSize)
  • 第一个参数为文件路径,第二个参数为文件尺寸。函数用于按照指定尺寸创建一个新文件,新创建的文件内部使用0填充。成功返回0,失败返回-1。
  • 2.5、哈希对象
  • 哈希对象用于维护一个哈希机构,保存用户的数据并提供数据读写操作。哈希对象中只保存用户数据的地址,数据空间的申请释放与哈希冲突的处理由用户自行维护。
  • 2.5.1、创建哈希
  • int GlbHashCreate(key_t iKey, ULONG ulHash)
  • 第一个参数为哈希数据的ID号,第二个参数为哈希对象的桶长。函数用于创建一个空的哈希对象。成功返回0,失败返回-1。
  • 2.5.2、销毁哈希
  • void GlbHashDelete()
  • 函数用于销毁一个已经创建的哈希对象。
  • 2.5.3、哈希函数
  • ULONG GlbHashFunction(char* pszKey, UINT uiLength)
  • 第一个参数为数据描述,第二个参数为描述长度。函数用于将一个传入的数据转换成哈希值。成功返回非0,失败返回0。用户可以根据情况重载这个函数,以便满足自己需求。
  • 2.5.4、数据查询
  • void* GlbHashGetBucket(ULONG ulBucket)
  • 参数为哈希值。函数功能为根据哈希值得到哈希对象中桶的位置。成功返回非空,失败返回空。
  • 2.6、日志对象
  • 日志对象用于对日志数据进行保存,对文件的操作是基于文本而言,支持基础的简单读写操作。
  • 2.6.1、缓存刷新
  • void GlbLogFlush()
  • 将缓存中的数据强制性写入文件。
  • 2.6.2、打开日志
  • int GlbLogOpen(char* pszLog, char* pszMode)
  • 第一个参数为日志文件的路径,第二个参数为日志的打开方式。函数用于创建或打开一个日志文件。成功返回0,失败返回-1。
  • 2.6.3、关闭日志
  • void GlbLogClose()
  • 函数用于关闭一个已经打开的日志文件。
  • 2.6.4、读取日志
  • UINT GlbLogRead(char* pszLine, UINT uiLength)
  • 第一个参数为保存读出数据的空间,第二个参数为空间的大小。函数用于从一个已经打开的日志文件中读取一行记录。成功返回读取的字节长度,失败返回-1。
  • 2.6.5、写入日志
  • UINT GlbLogWrite(char* pszLine, UINT uiLength)
  • 第一个参数为数据,第二个参数为数据的长度。函数用于向一个已经打开的日志文件里写入一条日志数据。成功返回写入的实际数据长度,失败返回-1。
  • 2.7、MD5对象
  • MD5对象用于对一个指定字节序列进行索引化,转换成为一个相对唯一的字节流。
  • 2.7.1、初始化
  • void GlbMd5Init()
  • 函数用于对MD5对象执行初始化。
  • 2.7.2、序列计算
  • void GlbMd5Update(UCHAR* puszBuf, UINT uiLen)
  • 第一个参数为字节序列数据,第二个参数为数据长度。函数用于对数据进行MD5算法计算。
  • 2.7.3、字节计算
  • void GlbMd5Transform(UINT buf[4], UINT in[16])
  • 第一个参数为四字节序列,第二个参数为十六字节序列。函数用于将传入序列按照定义算法重新序列化。
  • 2.7.4、MD5计算
  • void GlbMd5Run(UCHAR* puszBuf, UINT uiLen, UCHAR digest[16])
  • 第一个参数为源数据,第二个参数为数据长度,第三个参数为目标数据。函数用于将原始数据序列化为一个十六字节长度的字节流。
  • 2.7.5、MD5编码
  • void GlbMd5ByteReverse(UCHAR* puszBuf, UINT uiLongs)
  • 第一个参数为数据,第二个字节为数据长度。函数用于将传入数据逐一进行MD5编码操作。
  • 2.8、线程成员
  • 线程成员对象为线程池中成员,维护其自身的状态,协同线程池进行池中资源的调度。
  • 2.8.1、成员加锁
  • void GlbMemberLock()
  • 函数用于对线程成员自身加锁。
  • 2.8.2、成员解锁
  • void GlbMemberUnlock()
  • 函数用于对线程成员自身解锁。
  • 2.8.3、成员挂起
  • void GlbMemberWait()
  • 函数用于将线程成员自身挂起等待。
  • 2.8.4、成员通知
  • void GlbMemberSignal()
  • 函数用于线程成员自身发送消息,通知条件满足,解除挂起状态。
  • 2.8.5、成员取值
  • void* GlbMemberGetKey()
  • 函数用于取得线程池调度时下发的消息信息。返回值为消息地址。
  • 2.8.6、成员设值
  • void GlbMemberSetKey(void* pKey)
  • 参数为传入线程成员的参数。函数用于在线程池调度时,将下发的消息传输给线程成员。
  • 2.8.7、获取状态
  • UCHAR GlbMemberGetStatus()
  • 函数用于取得线程成员自身的状态。返回值为线程状态。
  • 2.8.8、设置状态
  • void GlbMemberSetStatus(UCHAR ucStatus)
  • 参数为线程状态。函数用于设置线程成员的状态。
  • 2.8.9、成员指派
  • int GlbMemberAssign(void* pKey)
  • 参数为线程成员消息。函数用于根据成员状态对线程池中资源进行调度。成功返回0,失败返回-1。
  • 2.9、IPC消息
  • IPC消息是基于IPC消息队列封装的对象,用于进程间消息共享,消息格式由用户定义。
  • 2.9.1、队列创建
  • int GlbIpcCreate(key_t iKey)
  • 参数为IPC消息队列的ID。函数用于在操作系统级别内创建一个具有唯一标识的IPC消息队列。成功返回0,失败返回-1。
  • 2.9.2、队列销毁
  • void GlbIpcDelete()
  • 函数用于销毁一个已经创建的IPC消息队列。
  • 2.9.3、队列设置
  • void GlbIpcSetKernel(ULONG ulMax, ULONG ulMnb, ULONG ulMni)
  • 第一个参数为单个消息的最大字节值,第二个参数为该消息队列的最大字节值,第三个参数为系统可支持的IPC消息队列对大值。函数用于修改系统对消息队列的默认设置。
  • 2.9.4、队列写入
  • int GlbMsgPut(void* pMsg, UINT uiSize)
  • 第一个参数为IPC消息,第二个参数为消息体的尺寸。函数用于向一个存在的消息队列里插入消息。成功返回0,失败返回-1。
  • 2.9.5、队列读取
  • int GlbMsgGet (void* pMsg, UINT uiSize)
  • 第一个参数为IPC消息,第二个参数为消息体的尺寸。函数用于从一个存在的消息队列里读取消息。成功返回0,失败返回-1。
  • 2.10、互斥锁
  • 互斥锁派生自锁基类,用于在多进程(线程)环境下对公共资源访问的保护。当互斥锁处于锁状态是,其他试图获取锁资源的操作均挂起等待。
  • 2.10.1、初始化
  • int GlbLockMalloc(void* pLock)
  • 参数为互斥锁的地址,当地址为空时由系统申请空间,否则使用用户指定空间。成功返回0,失败返回-1。
  • 2.10.2、创建锁
  • int GlbLockCreate(bool bShared)
  • 参数为条件锁属性是否支持进程共享(注:在某些操作系统中支持可能存在差异)。创建成功返回0,失败返回-1。
  • 2.10.3、销毁锁
  • int GlbLockDelete()
  • 该函数用于销毁之前已经创建的锁。
  • 2.11、管道对象
  • 管道对象用于创建一个管道,实现数据的有序操作和读取。
  • 2.11.1、创建缓冲
  • int GlbPipeResultMalloc(ULONG ulSize)
  • 参数为保存管道执行后数据的缓冲区尺寸。函数用户开辟内存空间,保存管道操作后的数据。成功返回0,失败返回-1。
  • 2.11.2、释放缓冲
  • void GlbPipeResultFree()
  • 函数用于释放一个已经创建的缓冲区。
  • 2.11.3、释放复位
  • void GlbPipeResultReset(ULONG ulSize)
  • 参数为保存管道执行后数据的缓冲区尺寸。函数用户复位内存空间。
  • 2.11.4、管道打开
  • int GlbPipeOpen(char* pszCmd, char* pszType)
  • 第一个参数为待打开指令,第二个参数为打开方式。函数用于打开一个指令。成功返回0,失败返回-1。
  • 2.11.5、管道关闭
  • void GlbPipeClose()
  • 函数用于关闭一个已经打开的管道。
  • 2.11.6、获取缓冲
  • char* GlbPipeResultGet()
  • 函数用于获取缓冲区数据。返回值为缓冲区地址。
  • 2.11.7、数据读取
  • UINT GlbPipeRead()
  • 函数用于从管道中读取数据。返回值为读取到得数据长度。
  • 2.12、线程池
  • 线程池用于管理线程成员对象,根据线程成员的状态,实现任务派发和状态的变更。
  • 2.12.1、属性初始
  • int GlbPoolAttrInit()
  • 函数用于初始化线程池内线程成员的属性。成功返回0,失败返回-1。
  • 2.12.2、创建成员
  • int GlbPoolCreate()
  • 函数用于根据成员属性创建线程成员。成功返回0,失败返回-1。
  • 2.12.3、销毁成员
  • void GlbPoolDestroy()
  • 函数用于销毁线程池内的线程成员。
  • 2.12.4、销毁成员
  • void GlbPoolJoin()
  • 函数用于将线程池中成员投入运行并等待成员执行返回,调用进(线)程挂起等待知道返回。
  • 2.12.5、函数设置
  • void GlbPoolSetStartRoutine(void* (*pStartRoutine)(void*))
  • 参数为函数地址。函数用于将函数地址赋值给线程池对象的函数成员变量,以便线程成员启动的时候调用。
  • 2.12.6、数量设置
  • void GlbPoolSetTotal(USHORT usTotal)
  • 参数为线程池成员总数。函数用于设置线程池中线程成员的总数。
  • 2.12.7、状态轮询
  • void GlbPoolDistribute(void* pPara)
  • 参数为线程成员的入口参数。函数用于查询线程成员的状态,当状态为空闲时将参数赋值给成员。
  • 2.12.8、池函数设置
  • void GlbPoolSetPoolCore(void (*pPoolCore)(void*))
  • 参数为函数地址。函数用于将函数地址赋值给线程池的函数成员变量,以便线程成员启动的时候调用。
  • 2.12.9、线程池调度
  • void* GlbPoolStartRoutine(void* pSelf)
  • 参数为线程池成员指针。函数用于线程池内部调度,根据各个线程成员的状态进行唤起和清理操作。
  • 2.13、队列对象
  • 队列对象用于维护一个消息的集合,与IPC消息不同的地方主要体现在消息不能实现进程间共享,消息参数不受内核限制,消息随进程持续,消息长度变长等方面。
  • 2.13.1、消息遍历
  • void* GlbQueueHasNext(void* pCur)
  • 参数为队列内消息位置地址。函数用于对队列中的所有消息从头到尾遍历,遍历过程不会修改消息体及队列格式。返回值为下一条消息,空为达到队列尾部,遍历完成。
  • 2.13.2、消息总数
  • ULONG GlbQueueGetTotal()
  • 函数用于获取当前消息队列中消息的总数。返回值为消息总数。
  • 2.13.3、弹出消息
  • int GlbQueuePop(void *pData, UINT uiSize)
  • 第一个参数为存放消息的空间,第二个参数为空间的尺寸。函数用于从消息队列队首弹出一条消息。成功返回0,失败返回-1。
  • 2.13.4、压入消息
  • int GlbQueuePut(void *pData, UINT uiSize)
  • 第一个参数为消息体,第二个参数为消息体的尺寸。函数用于向消息队列队尾追加一条消息。成功返回0,失败返回-1。
  • 2.13.5、读取消息
  • int GlbQueueGet(void *pData, UINT uiSize)
  • 第一个参数为存放消息的空间,第二个参数为空间的尺寸。函数用于从消息队列中读取一条消息,消息长度必须等于空间尺寸,否则跳过。成功返回0,失败返回-1。
  • 2.13.6、锁定队列
  • void GlbQueueLock()
  • 函数用于锁定消息队列。
  • 2.13.7、解锁队列
  • void GlbQueueUnlock ()
  • 函数用于解除消息队列锁定。
  • 2.14、读写锁
  • 读写锁派生自锁基类,用于在多进程(线程)环境下对公共资源访问的保护。通过读(写)写互斥,读读共享满足需求。
  • 2.14.1、初始化
  • int GlbLockMalloc(void* pLock)
  • 参数为条件锁的地址,当地址为空时由系统申请空间,否则使用用户指定空间。成功返回0,失败返回-1。
  • 2.14.2、创建锁
  • int GlbLockCreate(bool bShared)
  • 参数为条件锁属性是否支持进程共享(注:在某些操作系统中支持可能存在差异)。创建成功返回0,失败返回-1。
  • 2.14.3、销毁锁
  • int GlbLockDelete()
  • 该函数用于销毁之前已经创建的锁。
  • 2.14.4、加读写锁
  • int GlbLockLock(UCHAR ucType)
  • 参数为锁类型,读或者写。函数用于进(线)程中对公共资源访问控制前向锁机制提出资源占用申请。
  • 2.14.5、解读写锁
  • int GlbLockUnlock()
  • 函数用于进(线)程中对公共资源访问控制后向锁机制提出资源释放申请。
  • 2.14.6、尝试加锁
  • int GlbLockTryLock(UCHAR ucType)
  • 参数为锁类型,读或者写。函数用于进(线)程中对公共资源访问控制前向锁机制尝试提出资源占用申请。成功返回0,失败返回-1。
  • 2.14.7、读取加锁
  • int GlbRwLockReadLock()
  • 函数用于加读取锁。成功返回0,失败返回-1。
  • 2.14.8、写入加锁
  • int GlbRwLockWriteLock()
  • 函数用于写入加锁。成功返回0,失败返回-1。
  • 2.14.9、尝试读锁
  • int GlbRwLockTryReadLock ()
  • 函数用于尝试加读取锁。成功返回0,失败返回-1。
  • 2.14.10、尝试写锁
  • int GlbRwLockTryWriteLock ()
  • 函数用于尝试写入加锁。成功返回0,失败返回-1。
  • 2.15、IPC信号
  • IPC信号是基于IPC信号量封装的对象,用于进程间信号共享,IPC信号派生自IPC基类。
  • 2.15.1、信号创建
  • int GlbIpcCreate(key_t iKey)
  • 参数为IPC信号量的ID。函数用于在操作系统级别内创建一个具有唯一标识的IPC信号量。成功返回0,失败返回-1。
  • 2.15.2、信号销毁
  • void GlbIpcDelete()
  • 函数用于销毁一个已经创建的IPC信号量。
  • 2.15.3、映射信号
  • int GlbSemAttach(key_t iKey)
  • 参数为IPC信号量的ID。函数用于在操作系统级别内映射一个已经创建的IPC信号量。成功返回0,失败返回-1。
  • 2.15.4、获取信号
  • int GlbSemAcquire()
  • 函数用于对一个信号量进行获取操作。成功返回0,失败返回-1。
  • 2.15.5、释放信号
  • int GlbSemRelease ()
  • 函数用于对一个信号量进行释放操作。成功返回0,失败返回-1。
  • 2.16、集合对象
  • 集合对象是存储一系列相同格式数据的集合,数据在集合中是连续有序的排列,通过二分查找可以快速定位数据。
  • 2.16.1、获取集合
  • void* GlbSetGetSet()
  • 函数用于获取集合数据。返回值为集合数据地址。
  • 2.16.2、设置尺寸
  • UINT GlbSetGetSize()
  • 函数用于得到集合中元素的尺寸。返回值为元素尺寸。
  • 2.16.3、获取总数
  • UINT GlbSetGetCount()
  • 函数用于获取集合中元素的总数。
  • 2.16.4、获取对比
  • GlbSetCompPtr GlbSetGetCompare()
  • 函数用于得到集合排序比较函数的地址。返回值为比较函数地址。
  • 2.16.5、设置集合
  • void GlbSetPutSet(void* pSet)
  • 参数为数据集合的地址。函数用于将数据集合赋值给集合对象,以便利用集合方法实现数据操作的算法。
  • 2.16.6、获取尺寸
  • void GlbSetPutSize(UINT uiSize)
  • 参数为数据集合中元素的尺寸。函数用于设置元素尺寸。
  • 2.16.7、设置总数
  • void GlbSetPutCount(UINT uiCount)
  • 参数为数据集合的总数。函数用于设置集合总数。
  • 2.16.8、销毁集合
  • void GlbSetDestroy()
  • 函数用于释放集合内部的存储空间。
  • 2.16.9、初始集合
  • int GlbSetInit(UINT uiTotal, UINT uiSize)
  • 第一个参数为元素总数,第二个参数为元素尺寸。函数用于创建一个指定空间的空集合。成功返回0,失败返回-1。
  • 2.16.10、克隆集合
  • void GlbSetClone(CGlbSet& CSet)
  • 参数为一个现有集合。函数用于按照参数集合的格式和内容,复制一个完全一致的新集合。
  • 2.16.11、设置比较
  • void GlbSetCompare(GlbSetCompPtr pCompare)
  • 参数为比较函数地址。函数用于将函数地址指向集合对象的成员变量。
  • 2.16.12、下标读取
  • void* GlbSetIndexGet(UINT uiIndex)
  • 参数为数据集合的下标。函数用于返回指定下标的元素数据。返回值为数据地址。
  • 2.16.13、下标清除
  • void GlbSetIndexErase(UINT uiIndex)
  • 参数为数据集合的下标。函数用于清除指定位置元素的数据。
  • 2.16.14、下标赋值
  • UINT GlbSetIndexPut(UINT uiIndex, void* pData)
  • 第一个参数为数据集合下标,第二个参数为数据元素。函数用于向数据集合中指定位置写入数据。成功返回0,失败返回-1。
  • 2.16.15、集合整理
  • void GlbSetOrder()
  • 函数用于对一个对一个数据集合集合进行整理,清除其中的空元素。
  • 2.16.16、集合排序
  • void GlbSetSort()
  • 函数用于对一个数据集合进行排序。
  • 2.16.17、集合检索
  • long GlbSetIndex(void* pKey)
  • 参数为检索的数据。函数用于从数据集合中搜索指定数据,返回值为其在数据集合中的下标。
  • 2.16.18、集合查询
  • int GlbSetSearch(void* pKey, void* pData)
  • 第一个参数为查询数据,第二个参数为存放数据的空间。函数用于从数据集合中搜索指定数据。成功返回0,失败返回-1。
  • 2.16.19、元素判断
  • bool GlbSetIndexIsNull(UCHAR* pucCur)
  • 参数为数据位置。函数用于根据数据位置判断元素是否存在。存在返回真,不存在返回假。
  • 2.17、共享内存
  • 共享内存是基于IPC共享内存封装的对象,用于进程间数据共享,共享内存派生自IPC基类。
  • 2.17.1、ID获取
  • int GlbShmGetID()
  • 函数用于获取共享内存的ID号。返回值为共享内存ID。
  • 2.17.2、地址获取
  • void* GlbShmGetShm()
  • 函数用于获取共享内存地址。返回值为数据地址。
  • 2.17.3、ID设置
  • void GlbShmPutID(int iID)
  • 参数为需要设置的共享内存ID号。函数用于将一个共享内存ID号赋值给共享内存对象。
  • 2.17.4、数据复位
  • void GlbShmReset(ULONG ulSize)
  • 参数为共享内存空间尺寸。函数用于将共享内存空间全部清除。
  • 2.17.5、解除映射
  • void GlbShmDetach()
  • 函数用于将一个正在映射的共享内存从进程中解除映射。
  • 2.17.6、加载映射
  • void* GlbShmAttach()
  • 函数用于将一个共享内存映射到本进程内。返回值为映射地址。
  • 2.17.7、内核设置
  • void GlbIpcSetKernel(ULONG ulMax, ULONG ulAll)
  • 第一个参数为共享内存最大尺寸,第二个参数为系统可用共享内存尺寸。函数用于修改内核参数。
  • 2.17.8、内存创建
  • int GlbIpcCreate(key_t iKey, ULONG ulSize)
  • 第一个参数为IPC的ID号,第二个参数为待创建共享内存的尺寸。函数用于向操作系统提交共享内存创建申请。成功返回0,失败返回-1。
  • 2.17.9、内存销毁
  • void GlbIpcDelete()
  • 函数用于销毁一个已经创建的共享内存。
  • 2.18、线程对象
  • 线程对象用于组成线程池中线程元素,线程成员派生自线程对象,线程对象具备线程的一切属性。
  • 2.18.1、线程提交
  • int GlbThreadJoin()
  • 函数用于将线程提交运行,调用进(线)程等待该线程的执行和返回。成功返回0,失败返回-1。
  • 2.18.2、线程销毁
  • int GlbThreadDestroy()
  • 函数用于将一个线程对象终止执行,并释放线程占用资源。成功返回0,失败返回-1。
  • 2.18.3、属性初始
  • int GlbThreadAttrInit()
  • 函数用于对线程对象的线程属性进行初始化。成功返回0,失败返回-1。
  • 2.18.4、属性设置
  • void GlbThreadAttrSet(void* pAttr)
  • 参数为待设置线程属性。函数用于将一个已经初始化完成的线程属性赋值给当前线程。
  • 2.18.5、设分离态
  • int GlbThreadAttrSetDetach()
  • 函数用于将当前线程的执行设置为分离态,即有操作系统对线程执行结束后的资源执行回收。成功返回0,失败返回-1。
  • 2.18.6、设分离态
  • int GlbThreadCreate(void* pPara)
  • 参数为传入线程的执行参数。函数用于创建一个新线程。成功返回0,失败返回-1。
  • 2.18.7、函数设置
  • void GlbThreadSetStartRoutine(void* (*pStartRoutine)(void*))
  • 参数为函数地址,即线程创建时的调用函数。函数用于将调用函数赋值给线程对象的成员变量,以便创建时启动。
  • 2.19、时间对象
  • 时间对象是封装了系统的时间,用于对程序的执行过程进行计时操作,时间精度达到微秒。
  • 2.19.1、开始计时
  • void GlbTimeOn()
  • 函数用于记录开始时间。
  • 2.19.2、结束计时
  • void GlbTimeOff()
  • 函数用于记录结束时间。
  • 2.19.3、获取开始
  • void* GlbTimeGetOn()
  • 函数用于获取开始计时的值。返回值为时间值。
  • 2.19.4、获取结束
  • void* GlbTimeGetOff ()
  • 函数用于获取结束计时的值。返回值为时间值。
  • 2.19.5、计时输出
  • void GlbTimeDisplay()
  • 函数用于将计时结果输出到标准输出。计时结果单位为秒加微秒。
  • 2.19.6、开始输出
  • void GlbTimeDisplayOnNumber()
  • 函数用于输出开始计时的时间,计时结果为秒加微秒,其中秒为1970年至今的总秒数。
  • 2.19.7、结束输出
  • void GlbTimeDisplayOffNumber()
  • 函数用于输出结束计时的时间,计时结果为秒加微秒,其中秒为1970年至今的总秒数。
  • 2.19.8、开始字符
  • void GlbTimeDisplayOnString()
  • 函数用于将开始计时的时间值按照时分秒微秒的结构输出到标准输出。
  • 2.19.9、结束字符
  • void GlbTimeDisplayOffString()
  • 函数用于将结束计时的时间值按照时分秒微秒的结构输出到标准输出。
  • 3、通信对象
  • 3.1、epoll对象
  • Epoll对象是基于epoll套接字管理技术,对大量通信套接字进行集中管理,以满足服务端并发处理需要。
  • 3.1.1、epoll关闭
  • void GlbEpollClose()
  • 函数用于关闭一个已经打开的epoll描述符。
  • 3.1.2、epoll设定
  • void GlbEpollSetFunction(void (*pFunction)(int))
  • 参数为含有一个参数的函数地址。函数用于定义epoll调用函数。
  • 3.1.3、TCP初始
  • int GlbEpollTcpInit(char* pszPort)
  • 参数为监听端口。函数用于初始化一个监听端口,让epoll监听该端口的消息。成功返回0,失败返回-1。
  • 3.1.4、TCP监听
  • void GlbEpollTcpWait()
  • 函数用于对指定端口进行监听,当有数据到达时,调用指定函数。
  • 3.2、组播对象
  • 组播对象用于组播通信,对所有组播组内的设备实施数据传输。
  • 3.2.1、获取地址
  • void* GlbMultiGetMulti()
  • 函数用于获取组播地址。返回值为组播地址。
  • 3.2.2、设置地址
  • void GlbMultiSetMulti(void* pAddr)
  • 参数为套接字地址。函数用于设置一个组播地址。
  • 3.2.3、初始发送
  • int GlbNetInitSend(struct sockaddr_in* pstAddr)
  • 参数为组播地址。函数用于初始化一个组播通信套接字。成功返回0,失败返回-1。
  • 3.2.4、初始接收
  • int GlbNetInitRecv (struct sockaddr_in* pstAddr)
  • 参数为组播地址。函数用于初始化一个组播通信套接字。成功返回0,失败返回-1。
  • 3.2.5、初始发送
  • int GlbNetInitSend(char* pszAddress, char* pszPort)
  • 第一个参数为组播地址,第二个参数为组播端口。函数用于初始化一个组播通信套接字。成功返回0,失败返回-1。
  • 3.2.6、初始接收
  • int GlbNetInitRecv (char* pszAddress, char* pszPort)
  • 第一个参数为组播地址,第二个参数为组播端口。函数用于初始化一个组播通信套接字。成功返回0,失败返回-1。
  • 3.2.7、发送数据
  • int GlbNetSend(UCHAR* puszPacket, int iLength)
  • 第一个参数为发送报文,第二个参数为报文长度。函数用于向一个组播地址发送数据。成功返回0,失败返回-1。
  • 3.2.8、接收数据
  • int GlbNetRecv (UCHAR* puszPacket, int iLength)
  • 第一个参数为接收报文,第二个参数为最大接收长度。函数用于从一个组播地址接受数据。成功返回0,失败返回-1。
  • 3.3、套接字
  • 套接字对象封装了基本套接字的函数,是通信类的基类,定义了各种常用方法,子类重载实现具体功能。
  • 3.3.1、创建套接字
  • int GlbNetOpen(int iType)
  • 参数为待创建套接字的类型。函数用于创建一个新的套接字。成功返回0,失败返回-1。
  • 3.3.2、关闭套接字
  • void GlbNetClose()
  • 函数用于关闭一个已经打开的套接字。
  • 3.3.3、获取套接字
  • int GlbNetGetSocket()
  • 函数用于返回套接字描述符。返回值为套接字。
  • 3.3.4、设置套接字
  • void GlbNetSetSocket(int iSocket)
  • 参数为套接字描述符。函数用于将一个已创建的套接字赋值给套接字对象,以便使用套接字对象中的方法。
  • 3.3.5、修改限制
  • int GlbNetLimit(UINT uiTotal)
  • 参数为系统可创建套接字总数。函数用于修改操作系统内核对创建套接字总数的限制。成功返回0,失败返回-1。
  • 3.3.6、设置阻塞
  • int GlbNetSetNonBlock()
  • 函数用于将套接字设置为非阻塞模式。成功返回0,失败返回-1。
  • 3.3.7、端口复用
  • int GlbNetSetReuseAddr()
  • 函数用于对一个端口进行复用,以便多进程对同一端口进行监听。成功返回0,失败返回-1。
  • 3.3.8、发送缓冲
  • int GlbNetSetSndBuf(UINT uiSize)
  • 参数为缓冲区大小。函数用于设置发送缓冲区的大小。成功返回0,失败返回-1。
  • 3.3.9、接收缓冲
  • int GlbNetSetRcvBuf (UINT uiSize)
  • 参数为缓冲区大小。函数用于设置接收缓冲区的大小。成功返回0,失败返回-1。
  • 3.3.10、设置超时
  • void GlbNetSetTimeOut(int iSec, int iUsec)
  • 第一个参数为秒,第二个参数为微秒。函数用于设置套接字的超时。
  • 3.4、内部协议
  • 内部通信协议类用于内部系统间通信,协议分包头和包体,详细说明另见文档。
  • 3.4.1、获取标识
  • UCHAR GlbProGetFlag()
  • 函数用于获取报文的标志。返回值为标识符。
  • 3.4.2、获取宽度
  • UCHAR GlbProGetWide()
  • 函数用于获取报文的实时性属性。返回值为实时性标识。
  • 3.4.3、获取类型
  • UCHAR GlbProGetType()
  • 函数用于获取报文的类型属性。返回值为类型标识。
  • 3.4.4、获取动作
  • UCHAR GlbProGetVerb ()
  • 函数用于获取报文的动作属性。返回值为动作标识。
  • 3.4.5、获取属性
  • UCHAR GlbProGetAttr ()
  • 函数用于获取报文的属性属性。返回值为属性标识。
  • 3.4.6、获取类型
  • UCHAR GlbProGetLength ()
  • 函数用于获取报文的长度属性。返回值为长度标识。
  • 3.4.7、获取类型
  • UCHAR GlbProGetTotal ()
  • 函数用于获取报文的KV总数属性。返回值为KV总数。
  • 3.4.8、获取扩展
  • UCHAR GlbProGetExpand ()
  • 函数用于获取报文的扩展属性。返回值为扩展标识。
  • 3.4.9、获取结果
  • UCHAR GlbProGetResult ()
  • 函数用于获取报文的结果属性。返回值为结果标识。
  • 3.4.10、获取类型
  • UCHAR GlbProGetVersion ()
  • 函数用于获取报文的版本属性。返回值为版本。
  • 3.4.11、获取协议
  • UCHAR GlbProGetProtocol ()
  • 函数用于获取报文的协议属性。返回值为协议。
  • 3.4.12、获取类型
  • UCHAR GlbProGetResponse ()
  • 函数用于获取报文的应答属性。返回值为应答标识。
  • 3.4.13、获取包体
  • UCHAR* GlbProGetBody ()
  • 函数用于获取报文的包体。返回值为包体。
  • 3.4.14、获取扩展头
  • UCHAR* GlbProGetExHead ()
  • 函数用于获取报文的扩展头部。返回值为扩展头部。
  • 3.4.15、获取头部
  • EMPROHEAD_S* GlbProGetHead()
  • 函数用于获取报文的头部。返回值为包头。
  • 3.4.16、设置标识
  • void GlbProPutFlag(UCHAR ucFlag)
  • 参数为报文标识。函数用于设置报文的标识。
  • 3.4.17、设置标识
  • void GlbProPutWide(UCHAR ucWide)
  • 参数为报文实时性标识。函数用于设置报文的实时性标识。
  • 3.4.18、设置类型
  • void GlbProPutType(UCHAR ucType)
  • 参数为报文类型标识。函数用于设置报文的类型标识。
  • 3.4.19、设置动作
  • void GlbProPutVerb(UCHAR ucVerb)
  • 参数为报文动作标识。函数用于设置报文的动作标识。
  • 3.4.20、设置属性
  • void GlbProPutAttr(UCHAR ucAttr)
  • 参数为报文属性标识。函数用于设置报文的属性标识。
  • 3.4.21、设置标识
  • void GlbProPutLength(int iLength)
  • 参数为报文长度。函数用于设置报文的长度。
  • 3.4.22、设置标识
  • void GlbProPutTotal(USHORT usTotal)
  • 参数为报文KV总数。函数用于设置报文的KV总数。
  • 3.4.23、设置标识
  • void GlbProPutExpand(UCHAR ucExpand)
  • 参数为报文头部扩展标识。函数用于设置报文的头部扩展标识。
  • 3.4.24、设置结果
  • void GlbProPutResult(UCHAR ucResult)
  • 参数为报文结果标识。函数用于设置报文的结果标识。
  • 3.4.25、设置标识
  • void GlbProPutVersion(UCHAR ucVersion)
  • 参数为报文版本。函数用于设置报文的版本。
  • 3.4.26、设置协议
  • void GlbProPutProtocol(UCHAR ucProtocol)
  • 参数为报文协议标识。函数用于设置报文的协议标识。
  • 3.4.27、设置应答
  • void GlbProPutResponse(UCHAR ucResponse)
  • 参数为报文应答标识。函数用于设置报文的应答标识。
  • 3.4.28、设置包体
  • void GlbProPutBody(UCHAR* puszBody)
  • 参数为报文包体。函数用于设置报文的包体。
  • 3.4.29、设置扩展
  • void GlbProPutExHead(UCHAR* puszExHead)
  • 参数为报文扩展头部。函数用于设置报文的扩展头部。
  • 3.4.30、设置头部
  • void GlbProPutHead(EMPROHEAD_S* pstHead)
  • 参数为报文头部。函数用于设置报文的头部。
  • 3.4.31、设置标识
  • void GlbProPutFlag(UCHAR ucFlag)
  • 参数为报文标识。函数用于设置报文的标识。
  • 3.4.32、对象复位
  • void GlbProReset()
  • 函数用于将对象的成员变量全部复位。
  • 3.4.33、对象打印
  • void GlbProDisplay()
  • 函数用于将对象中所有的值打印到标准输出。
  • 3.4.34、对象克隆
  • void GlbProClone(CGlbPro& rCPro)
  • 参数为一个协议对象。函数用于按照传入参数的对象内容复制一个全新的协议对象。
  • 3.4.35、报文解析
  • void GlbProParse(UCHAR* puszPacket, int iLength)
  • 第一个参数为数据包,第二个参数为数据包的长度。函数用于解析数据包,并将解析的结果保存到对象的成员变量中。
  • 3.4.36、报文创建
  • void GlbProCreate(UCHAR* puszPacket, int iLength)
  • 第一个参数为数据包,第二个参数为数据包的长度。函数用于将对象中成员变量的值按照协议格式拼装到报文中。
  • 3.4.37、强制请求
  • void GlbProRequest(UCHAR* puszPacket)
  • 参数为存放报文的空间。函数用于生成一个强制请求报文。
  • 3.4.38、强制应答
  • void GlbProResponse (UCHAR* puszPacket)
  • 参数为存放报文的空间。函数用于生成一个强制应答报文。
  • 3.4.39、键值释放
  • void GlbProKvFree(EMPROKV_S** ppstKv, USHORT usTotal)
  • 第一个参数为键值对数组,第二个参数为数组总数。函数用于将之前开辟的键值对空间进行释放。
  • 3.4.40、键值申请
  • EMPROKV_S* GlbProKvMalloc(USHORT usTotal, int iSize)
  • 第一个参数为键值对数组总数,第二个参数为数组结构中值地址指向空间的大小。函数用于开辟键值对空间。返回值为键值对数组地址。
  • 3.4.41、键值复位
  • void GlbProKvReset(EMPROKV_S* pstKv, USHORT usTotal, int iSize)
  • 第一个参数为键值对数组,第二个参数为数组总数,第三个参数为数组结构中值地址指向的空间大小。函数用于对之前开辟的键值对数组空间进行清除复位操作。
  • 3.4.42、键值导入
  • int GlbProKvInput(EMPROKV_S* pstKv, USHORT usTotal, UCHAR* puszPacket, int iLength)
  • 第一个参数为KV键值对数组,第二个参数为键值对总数,第三个参数为报文,第四个参数为报文长度。函数用于将报文中数据按照协议格式进行解析并保存到KV键值对数组中。成功返回0,失败返回-1。
  • 3.4.43、键值导出
  • int GlbProKvOutput(EMPROKV_S* pstKv, USHORT usTotal, UCHAR* puszPacket, int iLength)
  • 第一个参数为KV键值对数组,第二个参数为键值对总数,第三个参数为报文,第四个参数为报文长度。函数用于将KV键值对数组按照协议格式拼装到报文中。成功返回0,失败返回-1。
  • 3.4.43、宽键复位
  • void GlbProWKvSet(EMPROWKV_S* pstWKv, UCHAR* puszPacket)
  • 第一个参数为宽键结构,第二个参数为数据报文。函数用于将数据报文内容按照数据格式赋值给宽KEY结构。
  • 3.4.44、宽键导入
  • void GlbProWKlvInput(EMPROWKLV_S* pstWKlv, UCHAR* puszPacket)
  • 第一个参数为宽键数据结构,第二个参数为报文。函数用于将报文中数据按照协议格式进行解析并保存到宽键数组中。
  • 3.4.45、键值导出
  • void GlbProWKlvOutPut(EMPROWKLV_S* pstWKlv, UCHAR* puszPacket)
  • 第一个参数为宽键数据结构,第二个参数为报文。函数用于将宽键数据按照协议格式拼装到报文中。
  • 3.5、TCP通信
  • TCP套接字对象继承了基本套接字的函数,是通信类的子类,定义了TCP通信中常用的函数。
  • 3.5.1、TCP监听
  • void GlbTcpAccept()
  • 函数用于对指定TCP端口进行监听。
  • 3.5.2、TCP受理
  • void GlbTcpSetFunction(void (*pFunction)(int))
  • 参数为含有一个整形参数(新接入套接字)的函数地址。函数用于定义TCP接入后调用函数。
  • 3.5.3、延迟提交
  • int GlbTcpSetNoDelay()
  • 函数用于设置TCP通信禁止延迟提交,即不采用默认TCP通信优化方案。成功返回0,失败返回-1。
  • 3.5.4、TCP挂断
  • void GlbTcpShutdown(int iHow)
  • 参数为TCP挂断参数。函数用于对TCP套接字通信实时关闭控制。
  • 3.5.5、TCP等待
  • int GlbTcpSetLinger(int iSecond)
  • 参数为等待时间,单位为秒。函数用于设置TCP套接字关闭时等待时间。成功返回0,失败返回-1。
  • 3.5.6、TCP初始
  • int GlbTcpInit(char* pszPort)
  • 参数为监听端口。函数用于初始化一个监听端口。成功返回0,失败返回-1。
  • 3.5.7、TCP连接
  • int GlbTcpConnect(struct sockaddr_in* pstAddr)
  • 参数为套接字地址。函数用于按照参数地址以非阻塞模式连接远程服务器。成功返回0,失败返回-1。
  • 3.5.7、TCP连接
  • int GlbTcpConnect(char* pszAddress, char* pszPort)
  • 第一个参数为地址,第二个参数为端口。函数用于按照参数地址以非阻塞模式连接远程服务器。成功返回0,失败返回-1。
  • 3.5.8、数据发送
  • int GlbNetSend(UCHAR* puszPacket, int iLength)
  • 第一个参数为数据报文,第二个参数为报文长度。函数用于向远程服务器发送数据。返回值为发送的实际数据长度。
  • 3.5.9、数据接收
  • int GlbNetRecv (UCHAR* puszPacket, int iLength)
  • 第一个参数为数据报文,第二个参数为报文长度。函数用于从远程服务器接收数据。返回值为接收的实际数据长度。
  • 3.6、UDP通信
  • UDP套接字对象继承了基本套接字的函数,是通信类的子类,定义了UDP通信中常用的函数。
  • 3.6.1、获取地址
  • void* GlbUdpGetAddr()
  • 函数用于获取UDP的通信地址。
  • 3.6.2、地址复位
  • void GlbUdpReset()
  • 函数用于清除复位UDP的通信地址。
  • 3.6.3、设置地址
  • void GlbUdpSetAddr(void* pAddr)
  • 参数为UDP通信套接字。函数用于设置UDP通信套接字。
  • 3.6.4、UDP连接
  • int GlbUdpConnect(struct sockaddr_in* pstAddr)
  • 参数为套接字地址。函数用于按照参数地址以非阻塞模式连接远程服务器。成功返回0,失败返回-1。
  • 3.6.5、UDP连接
  • int GlbUdpConnect(char* pszAddr, char* pszPort)
  • 第一个参数为地址,第二个参数为端口。函数用于按照参数地址以非阻塞模式连接远程服务器。成功返回0,失败返回-1。
  • 3.6.6、发送初始
  • int GlbNetInitSend(struct sockaddr_in* pstAddr)
  • 参数为套接字地址。函数用于按照地址初始化发送套接字。成功返回0,失败返回-1。
  • 3.6.7、接收初始
  • int GlbNetInitRecv (struct sockaddr_in* pstAddr)
  • 参数为套接字地址。函数用于按照地址初始化接收套接字。成功返回0,失败返回-1。
  • 3.6.8、发送初始
  • int GlbNetInitSend(char* pszAddr, char* pszPort)
  • 第一个参数为地址,第二个参数为端口。函数用于按照地址初始化发送套接字。成功返回0,失败返回-1。
  • 3.6.9、发送初始
  • int GlbNetInitRecv (char* pszAddr, char* pszPort)
  • 第一个参数为地址,第二个参数为端口。函数用于按照地址初始化接收套接字。成功返回0,失败返回-1。
  • 3.6.10、数据发送
  • int GlbNetSend(UCHAR* puszPacket, int iLength)
  • 第一个参数为数据报文,第二个参数为报文长度。函数用于向远程服务器发送数据。返回值为发送的实际数据长度。
  • 3.6.11、数据接收
  • int GlbNetRecv (UCHAR* puszPacket, int iLength)
  • 第一个参数为数据报文,第二个参数为报文长度。函数用于从远程服务器接收数据。返回值为接收的实际数据长度。
  • 4、通用对象
  • 4.1、获取日期
  • void GlbLocalDay(char* pszDay)
  • 参数为保存日期的空间。函数用于获取当前日期,格式为年月日。
  • 4.2、获取时间
  • void GlbLocalTime(char* pszTime)
  • 参数为保存时间的空间。函数用于获取当前时间,格式为时分秒。
  • 4.3、获取时间
  • void GlbLocalDayTime(char* pszDayTime)
  • 参数为保存日期时间的空间。函数用于获取当前日期与时间,格式为年月日和时分秒。
  • 4.4、获取路径
  • char* GlbLocalPath(char* pszEnv)
  • 参数为环境变量字符串。函数用于根据环境变量获取当前路径。
  • 4.5、空间申请
  • void* GlbMalloc(ULONG ulSize)
  • 参数为待申请空间的大小。函数用于向操作系统内核申请一定大小的空间。返回值为空间地址。
  • 4.6、释放申请
  • void GlbFree(void** ppFree)
  • 参数为待释放空间。函数用于向操作系统内核申请释放空间。
  • 4.7、空间复位
  • void GlbReset(void* pReset, ULONG ulSize)
  • 第一个参数为空间地址,第二个参数为空间大小。函数用于清除复位指定空间中的数据。
  • 4.8、空间复位
  • void GlbFork()
  • 函数用于派生一个子进程。
  • 4.9、报文打印
  • void GlbPacketDisplay(UCHAR* puszPacket, int iLength)
  • 第一个参数为报文,第二个参数为报文长度。函数用于将报文按照每行十六个字符的长度,按照十六进制的格式输出到标准输出。
  • 4.10、BASE编码
  • UCHAR* GlbBaseEncode(UCHAR* puszSrc, int iSrc, int* piDst)
  • 第一个参数为源报文,第二个参数为报文长度,第三个参数为目标报文长度。函数用于将一串文字编码为base64格式。
  • 4.11、BASE解码
  • UCHAR* GlbBaseEncode(UCHAR* puszSrc, int iSrc, int* piDst)
  • 第一个参数为源报文,第二个参数为报文长度,第三个参数为目标报文长度。函数用于将base64格式报文还原。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厉力文武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值