数据访问接口学习小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据访问接口学习小结
数据访问接口进程是通过向数据服务器发送配置信息与数据信息的请求,在服务端通过信息的解析,把所请求的配置及数据组包,向请求端发送。在这个进程中主要涉及到两个线程:监听线程以及数据信息处理线程。
整个进程的流程图如下:
图1进程总流程图
一、监听线程
监听线程的作用主要是进行用户端与服务器端通信,保证数据信息稳定的传输。监听线程主要涉及的函数有:
(1)socket函数:用于创建监听套接字;
(2)setsockopt函数:设置与指定套接字相关的选项。为套接字相关的选项设置当前值,套接字可以是任何类型,可以处于任何状态。本线程几次用到了
这个函数,它们的作用分别为:(1)判断地址的复用功能;(2)判断套接字的
延迟功能;(3)关闭套接字时释放资源。
(3)bind函数:用于绑定一个套接字到指定端口;
(4)listen函数:把套接字设为监听状态;
(5)select函数:用于完成非阻塞式的工作方式,监视数据描述文件是否有变化(是否有套接字),以配合后面的accept函数进行连接;
(6)accept函数:确认外来连接,并将它与一个立即建立的数据套接字联系起来。原始套接字返回到监听状态。
(7)updateSocket函数:用于更新套接字,保证数据流传输的畅通。
监听线程的流程图为:
图2监听线程流程图
二、数据信息处理线程
消息数据处理线程的功能是:在请求端把配置组包向服务端发送请求,在服务端响应,解析配置,到数据库中根据配置提取相应的数据,组包向请求端发送,完成整个数据的传输过程。其线程接口类名: CDataProcThread。在此类中用到的函数有:
(1)init函数:用于初始化,加载配置;
(2)run函数:用于执行线程;
(3)recvMsg函数:用于判断是否接收到套接字信息;
(4)ReadIO函数:读取IO口的信息,也是用于判断是否有信息(recvMsg 函数调用到此函数);
(5)ReadAvailable函数;判断套接字流是否有数据到达(ReadIO函数调用到此函数);
(6)Readn函数;读取数据信息,返回已经读取的字节数(ReadIO函数调用到此函数);
(7)expMsg函数:解析消息函数;
(8)expCfgReqMsg函数;组织配置信息函数(受expMsg函数调用);
(9)orgSyncPwrCfgMsg函数:发动机有功配置消息组包,受expCfgReqMsg 函数调用;
(10)orgSyncFreqCfgMsg函数:发动机频率配置消息组包,受expCfgReqMsg 函数调用;
(11)orgStatFreqCfgMsg函数:厂站频率消息组包,受expCfgReqMsg函数调用;
(12)expDataReqMsg函数:解析数据请求消息包,受expMsg函数调用;
(13)getDetailData函数:从数据文件提取数据,受expMsg函数调用;
(14)orgDataMsg函数:数据函数提取后组包,受expMsg函数调用,准备发送到请求端;
数据处理线程流程图如下:
图3 数据处理线程流程图