关于服务端和客户端SDK代码及编译步骤的说明
- 格式:doc
- 大小:327.00 KB
- 文档页数:10
密级状态:绝密( ) 秘密( ) 内部( ) 公开( √ )文件状态: [ ] 草稿[ √ ] 正式发布[ ] 正在修改文件标识:RK-KF-YF-279当前版本:V1.1.5作者:吴良清完成日期:2021-08-31审核:陈海燕审核日期:2021-08-31title: Rockchip_Developer_Guide_Android11_SDK_V0.0.2_CNdescription: Android11开发指南published: truedate: 2021-07-13T06:21:56.250Ztags: sdkRockchip Android 11.0 SDK开发指南版本号作者修改日期修改说明备注V0.0.1吴良清2020-12-25发布RK3566/RK3568 Alpha版本V0.0.2卞金晨2021-01-06发布PX30/RK3326 Beta版本V1.0.0吴良清2021-01-29增加RK3566/RK3568 EVB板编译方法V1.1.0吴良清2021-02-23发布RK3399 Alpha版本V1.1.1吴良清2021-03-09修改单独编译kernel的说明V1.1.2吴良清2021-05-12支持RK3288W芯片平台V1.1.3吴良清2021-05-23增加常见问题说明V1.1.4吴良清2021-07-12支持RK3566 BOX产品形态,支持RK3328 BOX产品形态,增加repo服务器搭建及常见问题说明V1.1.5吴良清2021-08-31增加常见问题说明文档问题反馈:******************免责声明本文档按“现状”提供,瑞芯微电子股份有限公司(“本公司”,下同)不对本文档的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、特定目的性和非侵权性提供任何明示或暗示的声明或保证。
本文档仅作为使用指导的参考。
由于产品版本升级或其他原因,本文档将可能在未经任何通知的情况下,不定期进行更新或修改。
设备网络SDK编程指南1. 简介设备网络SDK编程指南旨在帮助开发者理解和使用设备网络SDK,实现设备与网络之间的通信。
2. 设备网络SDK概述设备网络SDK是一种用于在设备和网络之间进行通信的软件开发工具。
它提供了一组API(应用程序编程接口),使开发者能够轻松地将设备连接到网络并进行数据交换。
设备网络SDK通常包含以下功能:2.1 设备连接设备网络SDK提供了设备连接到网络的功能。
开发者可以使用SDK中的API来创建设备连接,并通过设备连接与网络进行通信。
2.2 数据传输设备网络SDK可以帮助开发者实现设备与网络之间的数据传输。
使用SDK提供的API,开发者可以将数据从设备发送到网络,也可以将数据从网络发送到设备。
2.3 数据加密与安全设备网络SDK通常还提供了数据加密与安全功能,以确保设备与网络之间的通信安全可靠。
开发者可以使用SDK提供的加密算法和安全协议来保护通信数据。
2.4 设备管理设备网络SDK还可以帮助开发者管理设备。
通过SDK提供的设备管理功能,开发者可以实现设备的注册、注销、查询等操作。
3. 设备网络SDK的使用使用设备网络SDK可以按照以下步骤进行:3.1 引入SDK在使用设备网络SDK之前,需要首先将SDK集成到项目中。
开发者可以从官方网站或开发者平台下载SDK,并将SDK添加到项目的依赖中。
3.2 创建设备连接在使用设备网络SDK之前,需要创建设备连接。
开发者可以使用SDK提供的API创建设备连接对象,并设置连接参数,比如设备ID、设备密钥等。
import device_network_sdk# 创建设备连接device_connection = device_network_sdk.create_connection(device_id, dev ice_key)3.3 设备连接与网络通信创建设备连接后,可以使用设备连接与网络进行通信。
开发者可以使用SDK 提供的API发送和接收数据。
客户端SDK开发使用手册NET_DVR_SetDVRConfig设置设备的配置信息。
BOOL NET_DVR_SetDVRConfig(LONG lUserID,DWORD dwCommand,LONG,LPVOID lpInBuffer,DWORD dwInBufferSize);ParameterslUserID[in] NET_DVR_Login或NET_DVR_Login_V30的返回值dwCommand[in] 设备配置命令,参见配置命令[in] 通道号,如果命令不需要通道号,该参数无效,置为0xFFFFFFFF 即可lpInBuffer[in] 输入数据的缓冲指针dwOutBufferSize[in] 输入数据的缓冲长度(以字节为单位)Return ValuesTRUE表示成功,FALSE表示失败,获取错误码调用NET_DVR_GetLastError. Remarks不同的获取功能对应不同的结构体和命令号,如下表所示:dwCommand宏定义dwCommand含义lpInBuffer对应结构体宏定义值NET_DVR_TRACK_CFG 160 NET_DVR_SET_TRACK_CFG设置双摄像机的配置参数See AlsoNET_DVR_GetDVRConfig NET_DVR_GetLastErrorNET_DVR_GetDVRConfig获取设备的配置信息。
BOOL NET_DVR_GetDVRConfig(LONG lUserID,DWORD dwCommand,LONG,LPVOID lpOutBuffer,DWORD dwOutBufferSize,LPDWORD lpBytesReturned);ParameterslUserID[in] NET_DVR_Login或NET_DVR_Login_V30的返回值dwCommand[in] 设备配置命令,参见配置命令[in] 通道号,如果命令不需要通道号,该参数无效,置为0xFFFFFFFF 即可lpOutBuffer[out] 接收数据的缓冲指针dwOutBufferSize[in] 接收数据的缓冲长度(以字节为单位),不能为0 lpBytesReturned[out] 实际收到的数据长度指针,不能为NULLReturn ValuesTRUE表示成功,FALSE表示失败,获取错误码调用NET_DVR_GetLastError Remarks不同的获取功能对应不同的结构体和命令号,如下表所示:dwCommand宏定义dwCommand含义lpOutBuffer对应结构体宏定义值NET_DVR_TRACK_CFG 161 NET_DVR_GET_TRACK_CFG获取双摄像机的配置参数NET_DVR_CLIENTINFO预览参数结构体。
描述配置sdk的步骤配置SDK的步骤随着移动应用的发展,SDK(软件开发工具包)成为了开发者不可或缺的工具。
通过集成SDK,开发者可以快速实现各种功能,提升应用的体验和功能性。
下面将介绍配置SDK的步骤,帮助开发者更好地集成SDK。
1. 确定需要集成的SDK在开始配置SDK之前,首先需要明确自己需要集成的SDK是什么。
可以根据应用的需求,选择合适的SDK。
常见的SDK包括地图SDK、支付SDK、广告SDK等。
2. 下载SDK文件一旦确定了需要集成的SDK,就可以去官方网站或开发者平台下载相应的SDK文件。
通常SDK文件会以压缩包的形式提供,下载后需要解压缩。
3. 创建工程项目在下载SDK文件的同时,需要在开发环境中创建一个新的工程项目。
根据开发环境的不同,可以选择Android Studio、Xcode等工具进行创建。
4. 导入SDK文件打开创建的工程项目,在工程目录下找到SDK文件夹,将解压缩后的SDK文件复制到该目录下。
然后在开发环境中选择导入SDK文件,确保文件能够被工程项目识别和调用。
5. 配置SDK依赖为了能够正常使用SDK的功能,还需要配置SDK的依赖关系。
在开发环境中打开工程项目的配置文件(如Android中的build.gradle 文件),添加SDK的依赖项。
6. 配置权限和配置文件某些SDK需要在应用中添加一些权限,以便正常运行。
开发者需要在工程项目的配置文件中添加相应的权限声明,确保应用在运行时能够获取到所需的权限。
此外,一些SDK还需要在工程目录下添加配置文件,用于存储一些关键信息,如应用ID、密钥等。
7. 初始化SDK在应用启动时,需要对SDK进行初始化操作。
开发者可以在应用的入口文件中调用SDK的初始化方法,并传入必要的参数进行初始化。
这样可以确保在应用运行时,SDK已经准备好并能够正常使用。
8. 集成SDK功能一旦SDK成功配置和初始化,就可以开始集成SDK的功能。
SDK编程经典解释什么是WinSDK:大致说来windows编程有两种方法: 1.windwos c方式(SDK), 2.c++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等,如果要深入下去,还是要熟悉SDK。
两种方法有哪些区别呢:SDK编程就是直接调用windows的API进行编程,但是有上千个API组成(win95的API有两千多个),这种数目太大了,对于编程显然不利。
而MFC把这些API封闭起来,共有一百多个类组成。
一般只需20多个windows类和另外20多个通用的非windows类就可"干活"了,这一改变无疑是有很大好处的。
尽管MFC如此方便,但是要学VC,直接去学MFC却是不明智的选择。
只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。
那些如多少天精通什么什么的书籍其实讲的全是些如怎么使用VC这种工具的话题,学来学去学会了怎么会使用VC这种工具,而不能深入MFC编程。
象VB这类工具就更令人感觉到太闷了,不过各有各的好处。
MFC虽然提高了程序员编程的效率,但是也失去了SDK编程的灵活性.....不好意思,跑题了....本专题假定:C语言是windows的源语言,用C进行SDK编程是最合适的,你应该至少学过C语言,知道C语言的各种语法等,当我说到指针等类似概念的时候,你不至于茫然就行了。
你还应该安装了Visual C++6.0,低版本的就不用用了吧,D版的才几块钱吗?推荐与参考资料:1.Petzold的[programming windows by petzold],这是我看过的一本书(电子书),不过是E文的,我只看了一半,"下载空间"一栏能供了该电子书。
中文版的是[Windows 程序设计](包括上,下卷),Charles Petzold著,北京博彦发展有限公司译,北京大学出版社出版,本书唯一的缺点就是太贵,价格是160元。
关于服务端和客户端SDK代码及编译步骤的说明1.服务端代码结构服务器端的代码由4个Project组成,分别是:CommonClass, ServiceDemo, ServiceParam, ServiceSDK。
1.1. CommonClassCommonClass是一个通用的类库,可以被服务端和客户端SDK上层的代码使用。
只是由于编译平台的不同,类库中的类有所删节。
GenericObject:对象池模板中的对象的基类,所有用对象池管理的对象都需要使用该类作为基类;ObjectHolder<T>:对象池模板中用到的对象管理模板,用于对对象进行管理,里面存储的对象都由GenericObject类派生而来;SinglitonPoolMgr<T>:单模式的对象池模板,使用ObjectHolder<T>实现的,单态的对象池模板;PolymorphicPoolMgr<T>:多模式的对象池模板,使用ObjectHolder<T>实现的,可以出现多个对象的对象池模板;CADOObj:继承自GenericObject的数据库连接对象;CDBCPool:使用PolymorphicPoolMgr<T>生成的数据库连接池,其中PolymorphicPoolMgr<T>模板使用的数据类型是CADOObj;CDBCPoolCollection:多个CDBCPool的集合,可以显现多个数据库的连接;CframeContainer:数据帧容器,实现了传输协议的功能,数据存储等;CframeContainer的对象由CframeContainerPool实现工厂模式;CframeContainerPool:CframeContainer对象池,采用工厂模式;CframeContainer 对象都在需要时向CframeContainerPool申请,不再使用时,回收到CframeContainerPool;CpriorityFrameQueue:带有优先级排队的帧容器队列,存储的对象是CframeContainer对象,可以根据CframeContainer对象的优先级,并按照先来后到的顺序进行排队;CrecordSetParser:封装了Recordset操作的一个类;CworkerThreadPool:实现线程池的一个类;1.2. ServiceSDK使用CommonClass类,实现的服务端功能模块。
sdk接入流程SDK接入流程。
一、概述。
SDK(Software Development Kit)是软件开发工具包的缩写,是一套开发工具的集合,用于实现特定软件应用程序的开发。
在移动应用开发中,SDK的接入是非常重要的一环,它可以为开发者提供丰富的功能和服务,帮助开发者更快地完成应用的开发和发布。
二、准备工作。
在进行SDK接入之前,开发者需要做好一些准备工作,包括:1. 确定需求,明确自己的应用需要哪些功能和服务,选择合适的SDK进行接入。
2. 获取SDK,从官方渠道获取最新版本的SDK,并阅读相关文档和说明。
3. 确定平台和版本,确定要接入的平台和版本,例如Android、iOS等,以及对应的版本号。
4. 确认权限,确认应用需要的权限和对应的申请流程,保证应用在接入SDK时能够正常运行。
三、SDK接入流程。
1. 导入SDK,将下载好的SDK导入到开发环境中,例如Android Studio、Xcode等。
2. 配置参数,根据SDK提供的文档,配置相应的参数,例如应用ID、密钥、回调URL等。
3. 添加依赖,在项目中添加SDK的依赖,确保应用能够正常调用SDK提供的功能和服务。
4. 初始化SDK,在应用启动时,初始化SDK,进行必要的设置和初始化操作。
5. 调用接口,根据SDK提供的接口文档,调用相应的接口实现功能,例如登录、支付、分享等。
6. 处理回调,处理SDK回调,处理用户的操作结果或者错误信息,保证应用的正常运行。
7. 测试调试,在接入SDK后,进行测试调试,确保应用在不同环境下能够正常使用SDK提供的功能。
四、注意事项。
在进行SDK接入的过程中,开发者需要注意以下事项:1. 遵循官方文档,严格按照SDK官方提供的文档和规范进行接入,确保接入的正确性和稳定性。
2. 版本更新,定期关注SDK的版本更新,及时更新应用中使用的SDK版本,以获取最新的功能和修复已知的问题。
3. 权限申请,在应用中使用SDK时,需要向用户申请相应的权限,确保用户的隐私和数据安全。
apisix windows编译一、概述Apisix是一款高性能的HTTP代理服务器,广泛应用于开发、测试和生产环境中。
本文将介绍如何使用Windows平台下的工具对Apisix进行编译。
二、准备工作1.确保Windows操作系统已安装,并具备基本的开发环境。
2.安装VisualStudio,版本建议为2019或更高。
3.安装CMake,用于构建和编译项目。
4.下载Apisix源代码,可以从官方网站或其他可靠来源获取。
三、编译步骤1.打开VisualStudio,选择“新建项目”或“打开现有项目”。
2.选择“VisualC++”类别,并选择“跨平台”应用程序类型。
3.浏览并选择下载的Apisix源代码文件,并设置项目名称和位置。
4.配置构建选项,包括编译器、链接器和其他必要的设置。
5.点击“生成”菜单,选择“生成解决方案”以生成项目。
6.执行生成命令后,VisualStudio将开始编译代码。
7.等待编译完成,生成可执行文件和相关库文件。
四、运行测试1.确保已安装所需的依赖库,如Boost等。
2.运行生成的Apisix可执行文件,并检查是否出现错误或异常。
3.可以使用工具如curl或浏览器进行测试,确保代理功能正常工作。
五、常见问题及解决方法1.编译过程中出现错误或警告:仔细检查源代码和配置文件,确保没有语法错误或遗漏的依赖项。
可以使用VisualStudio的错误提示和日志功能来查找问题所在。
2.代理功能不工作:检查网络设置和代理配置,确保代理服务器地址、端口和密码等信息正确。
同时,确保测试数据能够正常传输和接收。
3.内存泄漏或性能问题:使用工具如Valgrind或VisualStudio 的内存分析工具来检测潜在的内存泄漏问题。
还可以使用性能分析工具来评估代码的性能和瓶颈。
六、总结本文介绍了在Windows平台上编译Apisix的基本步骤和常见问题解决方法。
通过完成编译和运行测试,可以确保Apisix在Windows环境下的正常运行,为开发、测试和生产环境提供高性能的代理服务。
设备网络SDK编程指南1. 简介设备网络SDK是一种用于编写设备网络通信的软件开发工具包。
本文档旨在为开发人员提供使用设备网络SDK进行编程的指南。
2. SDK安装和配置要开始使用设备网络SDK进行编程,需要先安装和配置SDK。
下面是安装和配置SDK的步骤:1.下载SDK安装程序。
2.运行安装程序,按照安装向导完成SDK的安装。
3.配置SDK的环境变量,确保系统能够找到SDK的相关文件和库。
3. 编写网络设备程序使用设备网络SDK进行编程可以方便地实现与网络设备的通信。
下面是编写网络设备程序的基本步骤:1.导入设备网络SDK的库文件。
2.创建设备对象。
3.配置设备的网络设置。
4.建立与设备的连接。
5.发送和接收数据。
6.关闭与设备的连接。
下面是一个简单的示例代码,演示了如何使用设备网络SDK进行编程:import devnetsdk# 创建设备对象device = devnetsdk.Device()# 配置设备的网络设置device.set_network_settings(ip='192.168.1.100', port=8000)# 建立与设备的连接device.connect()# 发送数据device.send_data('Hello, device!')# 接收数据data = device.receive_data()# 关闭与设备的连接device.disconnect()4. SDK文档和示例代码详细的SDK文档和示例代码可以在SDK的安装目录中找到。
文档包括SDK的各种功能和方法的说明,示例代码可以帮助开发人员更好地理解和使用SDK。
5. 开发调试和错误处理在使用设备网络SDK进行编程时,开发人员需要进行调试和处理可能出现的错误。
下面是一些开发调试和错误处理的常用方法:•使用日志记录来跟踪程序的运行情况和调试信息。
•使用异常处理来处理可能发生的错误,避免程序崩溃。
关于服务端和客户端SDK代码及编译步骤的说明1.服务端代码结构服务器端的代码由4个Project组成,分别是:CommonClass, ServiceDemo, ServiceParam, ServiceSDK。
1.1. CommonClassCommonClass是一个通用的类库,可以被服务端和客户端SDK上层的代码使用。
只是由于编译平台的不同,类库中的类有所删节。
GenericObject:对象池模板中的对象的基类,所有用对象池管理的对象都需要使用该类作为基类;ObjectHolder<T>:对象池模板中用到的对象管理模板,用于对对象进行管理,里面存储的对象都由GenericObject类派生而来;SinglitonPoolMgr<T>:单模式的对象池模板,使用ObjectHolder<T>实现的,单态的对象池模板;PolymorphicPoolMgr<T>:多模式的对象池模板,使用ObjectHolder<T>实现的,可以出现多个对象的对象池模板;CADOObj:继承自GenericObject的数据库连接对象;CDBCPool:使用PolymorphicPoolMgr<T>生成的数据库连接池,其中PolymorphicPoolMgr<T>模板使用的数据类型是CADOObj;CDBCPoolCollection:多个CDBCPool的集合,可以显现多个数据库的连接;CframeContainer:数据帧容器,实现了传输协议的功能,数据存储等;CframeContainer的对象由CframeContainerPool实现工厂模式;CframeContainerPool:CframeContainer对象池,采用工厂模式;CframeContainer 对象都在需要时向CframeContainerPool申请,不再使用时,回收到CframeContainerPool;CpriorityFrameQueue:带有优先级排队的帧容器队列,存储的对象是CframeContainer对象,可以根据CframeContainer对象的优先级,并按照先来后到的顺序进行排队;CrecordSetParser:封装了Recordset操作的一个类;CworkerThreadPool:实现线程池的一个类;1.2. ServiceSDK使用CommonClass类,实现的服务端功能模块。
CCACenterModule:验证授权中心模块,用于对用户请求的核心业务处理程序进行授权,该模块功能尚未完整;CcommunicaitonModule:实现通信功能的模块;CcoreBusinessModule:核心业务处理模块,可以根据核心业务号返回处理函数的指针,进行二次开发时,其他的业务功能逻辑可以在该模块上扩展出来实现;CschedulingModule:调度模块;CsessionModule:会话记录模块,该模块功能尚未完成;CsocketStatus:用来记录socket通信状态的一个类,在CcommunicaitonModule中使用;Cuser:用来记录用户在线状态的一个类,是一个用户在服务端的抽象;CuserModule:在线用户管理模块,用来处理在线用户的登录等,实际上相当于Cuser 的对象池,但是功能更为复杂些;1.3. ServiceDemo是服务端开发的一个示例程序。
该程序在Debug时是一般的程序,编译为Release程序时,是标准的windows后台服务程序。
该程序只是调用了InitServiceSDKLib()和ReleaseServiceSDKLib(),实际的程序功能在ServiceSDK中实现。
1.4. ServiceParam用于生成服务器配置文件的,基于对话框的应用程序。
1.5. Project之间依赖关系1、Commonclass是基础类库;2、ServiceSDK依赖于Commonclass;3、ServiceDemo依赖于ServiceSDK和Commonclass;4、ServiceParam依赖于ServiceSDK和Commonclass;1.6. 服务端的数据流程1、用户数据从CcommunicaitonModule进入,CcommunicaitonModule向CframeContainerPool获得CframeContainer对象进行数据的接收;2、CcommunicaitonModule将接受完数据的CframeContainer对象提交给CuserModule,CuserModule会根据用户UID以及CframeContainer对象的优先级,对CframeContainer对象进行排队;3、CuserModule会决策,当前应该处理的CframeContainer对象,并将该对象提交给CschedulingModule进行任务调度;4、CschedulingModule分析CframeContainer对象,对其请求的合法性进行验证,也就是授权,该授权的功能由CCACenterModule完成;5、经过授权的CframeContainer对象请求,由CschedulingModule发起执行。
其过程是,CschedulingModule向CcoreBusinessModule 提交核心业务号,并获得核心业务处理程序的入口地址,然后向CworkerThreadPool申请一个工作者线程,最后,使用工作者线程运行核心业务处理程序;6、之后,核心业务处理程序开始运行。
一般的流程如下:如果需要对数据库进行访问,核心业务处理程序会向CDBCPoolCollection请求一个数据连接对象,并使用该对象执行SQL语句。
如果是查表的语句的话,则再使用CrecordSetParser来协助生成XML格式的处理结果。
之后,处理程序会根据功能,向请求方发送方或者其他的用户发送数据。
7、在向用户发送数据时,业务处理程序同样向CframeContainerPool获得CframeContainer对象,并将需要发送的数据装入到CframeContainer对象中;8、之后业务处理程序将数据提交给CuserModule,CuserModule会根据用户UID以及CframeContainer对象的优先级,对CframeContainer对象进行排队;9、CuserModule会决策,并调整CframeContainer对象的发送顺序;10、最后,业务处理程序会通知CuserModule一次业务请求已经完成,这样CuserModule会自动触发下一个任务的处理。
2.客户端SDK代码结构客户端SDK主要包括以下几个Project:CommonclassSD,ClientSDKSD,ClientSDKSDDll,以及ClientSDKCSPocket和ClientDemoPocketPC。
2.1. CommonclassSD基础公共类库,用到的代码基本与服务端的Commonclass一致,只是做了删节。
SD的意思是for Smart Device。
该Project使用C++开发。
2.2. ClientSDKSD为Smart Device开发的客户端SDK。
该Project使用C++开发。
主要包含以下的模块:CclientCommunicationModule:客户端通信模块;CsynchronousActionRecord:同步操作记录集,用于协助完成同步操作、访问的功能;该模块还提供一些全局函数,用于进行API操作。
2.3. ClientSDKSDDll使用commonClassSD和ClientSDKSD开发的DLL库,主要提供对客户端SDK的API操作。
这些API操作主要分为2类:1、对底层模块的操作,包括启动后台通信模块,终止通信模块等;2、对CframeContainer对象的操作,包括获得CframeContainer对像,回收CframeContainer对象,读写CframeContainer对象中的数据等;2.4. ClientSDKCSPocket使用C#开发为PocketPC开发的ClientSDK。
主要包含以下内容:1、对ClientSDK的API函数进行封装,以便在C#的环境下可以调用;2、对ClientSDK中关于CframeContainer的操作作封装,以便在C#的环境下可以调用;3、还定义了一些工具类,如ClientSDKCSPocket.RecordControl和ClientSDKCSPocket.XmlParser,分别用于处理记录集和xml文件的打包、解析。
2.5. ClientDomoPocketPC为PocketPC开发的客户端示例程序。
2.6. Projet之间的依赖关系CommonclassSD,ClientSDSDK,ClientSDKSDDll均使用C++开发:1、CommonclassSD是基础共用类库;2、ClientSDSDK依赖于Commonclass;3、ClientSDKSDDll依赖于CommonclassSD和ClientSDSDK;ClientSDKCSPocket和ClientDemoPocketPC均使用C#开发:1、ClientSDKCSPocket依赖于CommonclassSD,ClientSDSDK,ClientSDKSDDll;2、ClientDemoPocketPC依赖于CommonclassSD,ClientSDSDK,ClientSDKSDDll和ClientSDKCSPocket;2.7. 客户端SDK模块之间数据流程1、用户使用API向CframeContainerPool获得CframeContainer对象进行数据填充;2、如果用户使用同步操作,则使用ClientSDKCSPocket.ClientSDK.SynSentFrame_Dll(System.IntPtr, refSystem.IntPtr, int)进行发送,否则使用ClientSDKCSPocket.ClientSDK.SentFrame_Dll(System.IntPtr)发送;3、数据提交到发送队列,发送队列使用CpriorityFrameQueue;4、如果是同步操作,发送后的CframeContainer对象备份到CsynchronousActionRecord中;5、服务端返回的数据,进入CclientCommunicationModule,CclientCommunicationModule使用CframeContainer对象进行接收,同样,该CframeContainer对象也是从CframeContainerPool申请得到的;6、接收完的数据,进行同步操作判断,如果是同步操作,则到CsynchronousActionRecord查找响应的请求分组,并置位“事件”,通知上层用户服务器已经响应该请求;如果是异步操作,这接收的CframeContainer对象被放到接收队列中,接收队列使用CpriorityFrameQueue;7、程序员可以使用API向接收队列获得CframeContainer对象并处理;8、对CframeContainer对象的处理代码由二次开发实现。