一种多应用层网管并发访问方法及装置.pdf

上传人:r5 文档编号:4075231 上传时间:2018-08-14 格式:PDF 页数:21 大小:1.55MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410835419.9

申请日:

2014.12.23

公开号:

CN104579766A

公开日:

2015.04.29

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||著录事项变更IPC(主分类):H04L 12/24变更事项:申请人变更前:上海凌云天博光电科技有限公司变更后:凌云天博光电科技股份有限公司变更事项:地址变更前:201807 上海市嘉定区城北路1355号D楼4层变更后:201807 上海市嘉定区城北路1355号D楼4层|||实质审查的生效IPC(主分类):H04L 12/24申请日:20141223|||公开

IPC分类号:

H04L12/24

主分类号:

H04L12/24

申请人:

上海凌云天博光电科技有限公司

发明人:

丁森林; 姚毅; 张见; 侯雪华; 但静

地址:

201807上海市嘉定区城北路1355号D楼4层

优先权:

专利代理机构:

北京弘权知识产权代理事务所(普通合伙)11363

代理人:

逯长明; 许伟群

PDF下载: PDF下载
内容摘要

本申请实施例公开了一种多应用层网管并发访问方法和装置。以I/O复用的方式同时监控多个局端网管进程,当接收到局端网管进程的连接请求时,建立与局端网管进程的通信,当局端网管进程发送数据时再开始进入接收数据的过程,因而不会出现通信阻塞的情况,响应速度快,效率高,实现局端网管进程的并发访问。同时对局端网管进程和局端访问层进程之间传输的数据进行类封装,对多个局端网管进程并发的传输数据进行统一的处理,避免并发访问时因为处理过程不一致而出现冲突和错误。

权利要求书

权利要求书1.  一种多应用层网管并发访问方法,其特征在于,包括:各个局端网管进程分别获取第一套接字,并向局端访问层进程发起连接请求;局端访问层进程轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接;局端网管进程将需要发送的数据封装成第一结构体,并将所述第一结构体发送至局端访问层进程;局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,将函数接口返回的数据封装为第二结构体,并将所述第二结构体发送至局端网管进程,第一结构体和第二结构体的封装方法相同;局端网管进程接收到第二结构体后,解析所述第二结构体得到经函数接口的数据;局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别关闭自身对应的套接字。2.  如权利要求1所述的多应用层网管并发访问方法,其特征在于,局端网管进程和局端访问层进程的套接字为UNIX域字节流套接字。3.  如权利要求1所述的多应用层网管并发访问方法,其特征在于,局端网管进程将需要发送的数据封装成第一结构体,包括:在局端网管进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量表示,将使用所述第一变量、第二变量、第三变量和第四变量表示后的数据封装成第一结构体;局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,将函数接口返回的数据封装为第二结构体,包括:在局端访问层进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出第一变量、第二变量、第三变量和第四变量,并将所述第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处理,接收函数接口返回的数据,并将函数接口返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体。4.  如权利要求1至3任一所述的多应用层网管并发访问方法,其特征在于,还包括:在局端访问层进程和局端网管进程分别定义套接字通信接口,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口,局端网管进程获取所述第一套接字后,调用局端网管进程的第一接口初始化所述第一套接字,局端访问层进程在获取局端访问层进程套接字后,调用局端访问层的第一接口初始化所述局端访问层进程套接字,局端网管进程调用局端网管进程的第二接口将所述第一结构体发送至局端访问层进程,局端访问层进程调用局端访问层进程的第三接口接收所述第一结构体,并调用局端访问层进程的第二接口将所述第二结构体发送至局端网管进程,局端网管进程调用局端网管进程的第三接口接收所述第二结构体,局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别调用各自的第四接口关闭自身的套接字。5.  如权利要求1所述的多应用层网管并发访问方法,其特征在于,所述建立局端访问层进程和局端网管进程的通信,在局端访问层进程一端,包括:步骤a1,获取局端访问层进程套接字描述符;步骤a2,监听局端网管进程的连接请求,将所述局端访问层进程套接字描述符加入到描述符集中;步骤a3,查询描述符集的状态,判断描述符集的状态是否存在变化;步骤a4,如果描述符集的状态存在变化,遍历所有描述符的状态,判断是否存在状态发生变化的描述符,否则,返回步骤a3;步骤a5:如果存在状态发生变化的描述符,判断状态发生变化的描述符是否等于所述局端访问层进程套接字描述符;步骤a6,如果状态发生变化的描述符等于所述局端访问层进程套接字描述符,则存在局端网管进程连接请求,接受所述局端网管进程连接请求,获取与局端网管进程进行通信的第二套接字,建立与局端网管进程的通信,将与局端网管进程通信的描述符加入到描述符集中,返回步骤a3,否则,局端访问层进程进入接收局端网管进程发送的数据的过程。6.  一种多应用层网管并发访问装置,其特征在于,包括:局端网管进程连接模块,用于在各个局端网管进程中分别获取第一套接字,并向局端访问层进程发起连接请求;局端访问层进程连接模块,用于在局端访问层进程中轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接;局端网管进程数据处理模块,用于将需要发送的数据封装成第一结构体;局端网管进程数据发送模块,用于将所述第一结构体发送至局端访问层进程;局端访问层进程数据接收模块,用于在局端访问层进程接收到所述第一结构体;局端访问层进程数据处理模块,用于根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,接收函数接口返回的数据封装为第二结构体,第一结构体和第二结构体的封装方法相同;局端访问层进程数据发送模块,用于将所述第二结构体发送至局端网管进程;局端网管进程数据接收模块,用于接收所述第二结构体,并解析所述第二结构体得到经函数接口的数据;局端网管进程通信关闭模块,用于在和局端访问层进程的通信完成后,关闭自身对应的套接字;局端访问层进程通信关闭模块,用于在和局端网管进程的通信完成后,关闭自身对应的套接字。7.  如权利要求6所述的多应用层网管并发访问装置,其特征在于,局端网管进程和 局端访问层进程的套接字为UNIX域字节流套接字。8.  如权利要求6所述的多应用层网管并发访问装置,其特征在于,所述局端网管进程数据处理模块,包括:第一变量定义子模块,用于在局端网管进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,第一数据封装子模块,用于在局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量表示,将使用所述第一变量、第二变量、第三变量和第四变量表示后的数据封装成第一结构体;所述局端访问层进程数据处理模块,包括:第二变量定义子模块,用于在局端访问层进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,第一解析子模块,用于在局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出第一变量、第二变量、第三变量和第四变量,传输子模块,用于将所述第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处理;返回数据接收子模块,用于接收函数接口返回的数据;第二封装子模块,用于将函数接口返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体。9.  如权利要求6至8任一所述的多应用层网管并发访问装置,其特征在于,还包括:第一套接字接口定义模块,用于在局端访问层进程定义套接字通信接口;第二套接字接口定义模块,用于在局端网管进程定义套接字通信接口;其中,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口,局端网管进程获取所述第一套接字后,调用局端网管进程的第一接口初始化所述第一套接字,局端访问层进程在获取局端访问层进程套接字后,调用局端访问层的第一接 口初始化所述局端访问层进程套接字,局端网管进程数据发送模块调用自身的第二接口将所述第一结构体发送至局端访问层进程,局端网管进程数据接收模块调用自身的第三接口接收所述第二结构体,局端访问层进程数据接收模块调用自身的第三接口接收所述第一结构体,并调用自身的第二接口将所述第二结构体发送至局端网管进程,局端网管进程通信关闭模块和局端访问层进程通信关闭模块分别调用各自的第四接口关闭自身的套接字。10.  如权利要求6所述的多应用层网管并发访问装置,其特征在于,所述局端访问层进程连接模块,包括:套接字描述符获取子模块,用于获取局端访问层进程套接字描述符;监听子模块,用于监听局端网管进程的连接请求,并将所述局端访问层进程套接字描述加入到描述符集中;描述符集状态查询子模块,用于查询描述符集的状态,判断描述符集的状态是否存在变化;描述符状态查询子模块,用于如果描述符集的状态存在变化,遍历所有描述符的状态,判断是否存在状态发生变化的描述符,否则,返回描述符集状态查询模块;描述符判断子模块,用于如果存在状态发生变化的描述符,判断状态发生变化的描述符是否等于所述局端访问层进程套接字描述符;通信连接建立子模块,用于如果状态发生变化的描述符等于所述局端访问层进程套接字描述符,则接受所述局端网管进程连接请求,获取与局端网管进程进行通信的第二套接字,建立与局端网管进程的通信,将与局端网管进程通信的描述符加入到描述符集中,返回描述符集状态查询子模块,否则,局端访问层进程进入接收局端网管进程发送的数据的过程。

说明书

说明书一种多应用层网管并发访问方法及装置
技术领域
本发明涉及网络技术领域,尤其涉及一种多应用层网管并发访问方法及装置。
背景技术
MOCA(Multimedia Over Coax Alliance,同轴电缆多媒体联盟)是通过使用家庭内现有同轴电缆连接家庭网络设备和消费电子设备的标准。MOCA接入网设备包括MOCA局端设备和MOCA终端设备,MOCA局端设备的作用在于将网络信号和电视信号等进行混合,由同轴口传输到MOCA终端,对终端进行配置管理。MOCA局端设备的输入包括网线中传输来的网络信号以及同轴线中的电视信号(电视信号可由光接收机通过同轴线发出)等,其输出为由同轴电缆传输的射频信号。MOCA终端设备将同轴线输入的信号解析,例如通过同轴线将电视信号传输到电视机,通过网线将数据信号和语音信号分别传输到电脑和电话。一个局端设备可以对多台终端设备进行管理。
其中,局端设备根据应用的需要,会涉及多种网管,包括:局端WEB网管,基于HTTP协议(Hypertext transfer protocol,超文本传输协议)接收浏览器的请求并响应,根据浏览器请求向局端守护进程发送相应的请求;局端SNMP网管,基于SNMP协议(Simple Network Management Protocol,简单网络管理协议)负责实现国标MIB库(Management Information Base,管理信息库)规定的所有节点,采集EOC(Ethernet over Coax,基于同轴电缆的以太网传输)设备信息,以及与前端网管系统NMS(Network Management System,网络管理系统)交换信息;局端TOOLING网管,接收TOOLING软件的请求并响应,主要用于工厂生产对设备烧写Flash、打印铭牌等。安装的网管属于局端设备的应用层,对于这些网管,在局端设备的软件架构中需要提供多种管理途径(SNMP/WEB/TOOLING)来管理。
但目前局端设备的软件架构,无法处理多种网管的并发访问,只能以串行方式逐个处理从各个网管而来的请求和信息,很难解决共享资源的同步问题,而且往往没有配置数据缓存机制,需要调用底层接口获取配置信息,响应速度慢。
发明内容
为克服相关技术中无法处理多种网管并发访问的问题,本申请提供一种多应用层网管并发访问方法及装置。
根据本申请实施例的第一方面,提供一种多应用层网管并发访问方法,包括:
各个局端网管进程分别获取第一套接字,并向局端访问层进程发起连接请求;
局端访问层进程轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接;
局端网管进程将需要发送的数据封装成第一结构体,并将所述第一结构体发送至局端访问层进程;
局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,将函数接口返回的数据封装为第二结构体,并将所述第二结构体发送至局端网管进程,第一结构体和第二结构体的封装方法相同;
局端网管进程接收到第二结构体后,解析所述第二结构体得到经函数接口的数据;
局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别关闭自身对应的套接字。
可选的,局端网管进程和局端访问层进程的套接字为UNIX域字节流套接字。
可选的,局端网管进程将需要发送的数据封装成第一结构体,包括:
在局端网管进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,
局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量表示,将使用所述第一变量、第二变量、第三变量和第四变量表示后的数据封装成第一结构体。
可选的,局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,将函数接口返回的数据封装为第二结构体,包括:
在局端访问层进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,
局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出第一变量、第二变量、第三变量和第四变量,并将所述第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处理,接收函数接口返回的数据,并将函数接口返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体。
可选的,所述的多应用层网管并发访问方法,还包括:
在局端访问层进程和局端网管进程分别定义套接字通信接口,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口,
局端网管进程获取所述第一套接字后,调用局端网管进程的第一接口初始化所述第一套接字,局端访问层进程在获取局端访问层进程套接字后,调用局端访问层的第一接口初始化所述局端访问层进程套接字,
局端网管进程调用局端网管进程的第二接口将所述第一结构体发送至局端访问层进程,
局端访问层进程调用局端访问层进程的第三接口接收所述第一结构体,并调用局端访问层进程的第二接口将所述第二结构体发送至局端网管进程,
局端网管进程调用局端网管进程的第三接口接收所述第二结构体,
局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别调用各自的第四接口关闭自身的套接字。
可选的,所述建立局端访问层进程和局端网管进程的通信,在局端访问层进程一端,包括:
步骤a1,获取局端访问层进程套接字描述符;
步骤a2,监听局端网管进程的连接请求,将所述局端访问层进程套接字描述加入到描述符集中;
步骤a3,查询描述符集的状态,判断描述符集的状态是否存在变化;
步骤a4,如果描述符集的状态存在变化,遍历所有描述符的状态,判断是否存在状态发生变化的描述符,否则,返回步骤a3;
步骤a5:如果存在状态发生变化的描述符,判断状态发生变化的描述符是否等于所述局端访问层进程套接字描述符;
步骤a6,如果状态发生变化的描述符等于所述套接字描述符,则存在局端网管进程连接请求,接受所述局端网管进程连接请求,获取与局端网管进程进行通信的第二套接字,建立与局端网管进程的通信,将与局端网管进程通信的描述符加入到描述符集中,返回步骤a3,否则,局端访问层进程进入接收局端网管进程发送的数据的过程。
相应于本申请实施例的第一方面,根据本申请实施例的第二方面,提供一种多应用层网管并发访问装置,包括:
局端网管进程连接模块,用于在各个局端网管进程中分别获取第一套接字,并向局 端访问层进程发起连接请求;
局端访问层进程连接模块,用于在局端访问层进程中轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接;
局端网管进程数据处理模块,用于将需要发送的数据封装成第一结构体;
局端网管进程数据发送模块,用于将所述第一结构体发送至局端访问层进程;
局端访问层进程数据接收模块,用于在局端访问层进程接收到所述第一结构体;
局端访问层进程数据处理模块,用于根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,接收函数接口返回的数据封装为第二结构体,第一结构体和第二结构体的封装方法相同;
局端访问层进程数据发送模块,用于将所述第二结构体发送至局端网管进程;
局端网管进程数据接收模块,用于接收所述第二结构体,并解析所述第二结构体得到经函数接口的数据;
局端网管进程通信关闭模块,用于在和局端访问层进程的通信完成后,关闭自身对应的套接字;
局端访问层进程通信关闭模块,用于在和局端网管进程的通信完成后,关闭自身对应的套接字。
可选的,局端网管进程和局端访问层进程的套接字为UNIX域字节流套接字。
可选的,所述局端网管进程数据处理模块,包括:
第一变量定义子模块,用于在局端网管进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,
第一数据封装子模块,用于在局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量表示,将使用所述第一变量、第二变量、第三变量和第四变量表示后的数据封装成第一结构体。
可选的,所述局端访问层进程数据处理模块,包括:
第二变量定义子模块,用于在局端访问层进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,
第一解析子模块,用于在局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出第一变量、第二变量、第三变量和第四变量,
传输子模块,用于将所述第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处理;
返回数据接收子模块,用于接收函数接口返回的数据;
第二封装子模块,用于将函数接口返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体。
可选的,所述的多应用层网管并发访问装置,还包括:
第一套接字接口定义模块,用于在局端访问层进程定义套接字通信接口;
第二套接字接口定义模块,用于在局端网管进程定义套接字通信接口;
其中,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口,
局端网管进程获取所述第一套接字后,调用局端网管进程的第一接口初始化所述第一套接字,局端访问层进程在获取局端访问层进程套接字后,调用局端访问层的第一接口初始化所述局端访问层进程套接字,
局端网管进程数据发送模块调用自身的第二接口将所述第一结构体发送至局端访问层进程,局端网管进程数据接收模块调用自身的第三接口接收所述第二结构体,
局端访问层进程数据接收模块调用自身的第三接口接收所述第一结构体,并调用自身的第二接口将所述第二结构体发送至局端网管进程,
局端网管进程通信关闭模块和局端访问层进程通信关闭模块分别调用各自的第四接口关闭自身的套接字。
可选的,所述局端访问层进程连接模块,包括:
套接字描述符获取子模块,用于获取局端访问层进程套接字描述符;
监听子模块,用于监听局端网管进程的连接请求,并将所述局端访问层进程套接字描述加入到描述符集中;
描述符集状态查询子模块,用于查询描述符集的状态,判断描述符集的状态是否存在变化;
描述符状态查询子模块,用于如果描述符集的状态存在变化,遍历所有描述符的状态,判断是否存在状态发生变化的描述符,否则,返回描述符集状态查询模块;
描述符判断子模块,用于如果存在状态发生变化的描述符,判断状态发生变化的描述符是否等于所述局端访问层进程套接字描述符;
通信连接建立子模块,用于如果状态发生变化的描述符等于所述局端访问层进程套接字描述符,则接受所述局端网管进程连接请求,获取与局端网管进程进行通信的第二套接字,建立与局端网管进程的通信,将与局端网管进程通信的描述符加入到描述符集中,返回描述符集状态查询子模块,否则,局端访问层进程进入接收局端网管进程发送的数据的过程。
本申请实施例提供的技术方案可以包括以下有益效果:以I/O复用的方式同时监控多个局端网管进程,当接收到局端网管进程的连接请求时,建立与局端网管进程的通信,当局端网管进程发送数据时再开始进入接收数据的过程,因而不会出现通信阻塞的情况,响应速度快,效率高,实现局端网管进程的并发访问。同时对局端网管进程和局端访问层进程之间传输的数据进行结构体封装,对多个局端网管进程并发的传输数据进行统一的处理,还可以对局端网管进程和局端访问层进程进行接口抽象,避免并发访问时因为处理过程不一致而出现冲突和错误。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一示例性实施例示出的一种多应用层网管并发访问方法的流程示意图。
图2为本申请另一示例性实施例示出的一种多应用层网管并发访问方法的流程示意图。
图3为本申请一示例性实施例示出的一种多应用层网管并发访问装置的框图。
图4为本申请另一示例性实施例示出的一种多应用层网管并发访问装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如 所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
根据本申请实施例的第一方面,提供一种多应用层网管并发访问方法。图1为本申请一示例性实施例示出的一种多应用层网管并发访问方法的流程示意图,图1中,虚线表示数据信息的传输方向。如图1所示,所述方法包括:
步骤S101,各个局端网管进程分别获取第一套接字,并向局端访问层进程发起连接请求。
其中,为了便于局端程序的设计和维护,将局端软件架构由上至下依次划分为局端访问层、局端业务软件层、局端SDK软件层和局端操作系统层。局端操作系统层即操作系统平台,例如基于LINUX的操作系统平台;局端SDK软件层用于对局端SDK进行封装,当SDK变化时,只需修改SDK层,上层的应用代码无需改变;局端业务软件层调用SDK的接口,进行业务配置,以及对业务配置进行存储;局端访问层用于与多种局端网管进行通信和数据传输,对多种局端网管进行管理,以及对多种局端网管的访问进行数据封装和接口抽象。对局端软件架构进行层次划分后,对于多种局端网管的并发访问,将主要由局端访问层来解决,局端访问层与多种局端网管建立起通信通道,进行数据通信,局端访问层与多种局端网管的通信由局端访问层进程和多种局端网管进程进行。局端访问层接收到局端网管的数据后进行解析,然后传递到局端业务软件层,在局端访问层中完成局端网管类型的差异处理,局端业务软件层便无需再考虑局端网管的类型,只需进行业务处理,从而可以更好的支持多种局端网管的访问。
各个局端网管进程在需要与局端访问层建立通信连接时,分别获取第一套接字,并向局端访问层进程发起连接请求。局端网管进程获取第一套接字和向局端访问层进程发起连接请求可以使用常规的方法,例如对基于LINUX的操作系统(以下皆以基于LINUX的操作系统进行举例),调用socket()来获取套接字描述符,即获取了第一套接字,并调用connect()来向局端访问层进行发起连接请求,以开始与局端访问层进行通信。
步骤S102,局端访问层进程轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接。
其中,具体地,步骤S102可以包括:
步骤a1,局端访问层获取局端访问层进程套接字及其描述符,并初始化对应的局端访问层进程套接字,在基于LINUX的操作系统下可以调用socket()来获取局端访问层进 程套接字描述符,局端访问层进程套接字文件路径和局端访问层进程套接字描述符绑定;
步骤a2,监听局端网管进程的连接请求,将所述局端访问层进程套接字描述符加入到描述符集中,在基于LINUX的操作系统下调用listen(),能够监听局端网管进程的连接请求,描述符集用于存储套接字描述符;
步骤a3,查询描述符集的状态,判断描述符集的状态是否存在变化,通常,会将描述符集赋值给临时描述符集,在基于LINUX的操作系统下使用select()函数查询临时描述符集的状态,通过select()的返回值来判断描述符集的状态是否存在变化,select()的返回值如果大于0则说明描述符集的状态存在变化;
步骤a4,如果描述符集的状态存在变化,遍历所有描述符的状态,判断是否存在状态发生变化的描述符,否则,返回步骤a3,继续查询描述符集的状态;
步骤a5:如果存在状态发生变化的描述符,判断状态发生变化的描述符是否等于所述局端访问层进程套接字描述符,即等于局端访问层获取的局端访问层进程套接字描述符;
步骤a6,如果状态发生变化的描述符等于所述局端访问层进程套接字描述符,则存在局端网管进程连接请求,接受所述局端网管进程连接请求,获取与局端网管进程进行通信的套接字及其描述符,即所述第二套接字及其描述符。在基于LINUX的操作系统下,所述与局端网管进程进行通信的套接字描述符可以使用accept()函数得到,得到与局端网管进程进行通信的套接字描述符即建立了与局端网管进程的通信,将与局端网管进程通信的套接字描述符加入到描述符集中,返回步骤a3,继续查询描述符集的状态,以考察是否有其他局端网管进程连接请求。如果当前遍历到的状态发生变化的描述符不等于局端访问层获取的局端访问层进程套接字描述符,则局端访问层进程进入接收局端网管进程发送的数据的过程。
其中,局端访问层进程通过轮询局端访问层进程套接字状态的变化,在接收到局端网管进程的连接请求后,建立局端访问层进程和各个局端网管进程的通信连接,以I/O复用的方式同时监控多个局端网管进程,当接收到局端网管进程的连接请求时,建立与局端网管进程的通信,当局端网管进程发送数据时(即遍历到的可读描述符不等于局端访问层获取的套接字描述符时),再开始进入接收数据的过程,因而不会出现通信阻塞的情况,响应速度快,效率高,使得局端网管进程的并发访问可以实现。
步骤S103,局端网管进程将需要发送的数据封装成第一结构体,并将所述第一结构体发送至局端访问层进程。
步骤S104,局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,将函数接口返回的数据封装 为第二结构体,并将所述第二结构体发送至局端网管进程,第一结构体和第二结构体的封装方法相同。
步骤S105,局端网管进程接收到第二结构体后,解析所述第二结构体得到经函数接口返回的数据。
其中,多个局端网管进程并发访问时,由于局端网管的类型不同,所传输的资源类型,涉及的操作类型不同,如果对每个局端网管进程的访问所传输的数据同时分别处理,由于处理过程不一致将使数据处理过程复杂而易出现冲突和错误,为能对多个局端网管进程并发的传输数据进行统一的处理,对局端网管进程传输的数据进行类封装,即将数据封装为结构体。对于局端网管进程而言,将需要发送给局端访问层进程的数据封装为第一结构体,然后发送至局端访问层进程。局端网管进程需要传输的数据都可以划分为网管类型、操作类型、资源类型和资源标识,因此可以在局端网管进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量来表示,将使用所述第一变量、第二变量、第三变量和第四变量表示后的数据作为结构体的成员,封装成第一结构体。例如,将网管类型定义为moduleType,将各种操作类型定义为operType,将资源类型定义为resType,将资源标识定义为resId,每个变量的值便是具体的网络类型、操作类型、资源类型和资源标识。构造结构体型uAlMsg,其以moduleType、operType、resType和resID为成员,uALMsg类型的结构体便是封装后的局端网管进程的数据。在局端网管进程向局端访问层进程发送数据时,将直接发送uAlMsg类型的结构体。
相应地,局端访问层进程接收到所述第一结构体后,根据第一结构体的封装方法相应地对所述第一结构体进行解析,解析出局端网管进程发送的数据。为了对封装的数据进行解析,以及后续在向局端网管进程返回数据时再次封装数据,在局端访问层进程可以预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,预先定义的变量和方法与局端网管进程预先定义的变量和方法相同。局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出第一变量、第二变量、第三变量和第四变量,例如局端访问层进程接收到局端网管进程发送的uALMsg类型的结构体后,提取结构体中的moduleType、operType、resType和resID变量,得到网管类型、操作类型、资源类型和资源标识数据。
局端访问层进程解析所述第一结构体得到相应的数据后,将解析得到的数据传输至对各个数据进行处理的函数接口,所述函数接口为处理数据的函数接收数据的接口,例如局端业务软件层的处理数据的函数,包括常规的数据过滤函数等。即将根据第一结构体解析得到的第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处 理。经函数处理过的数据,需要返回的会由函数接口返回给局端访问层进程。局端访问层进程接收到函数接口返回的数据后,再按照与局端网管进程封装数据同样的方法对数据进行封装。即将函数接口返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体。例如将函数接口返回的moduleType、operType、resType和resID再次封装为uALMsg类型的第二结构体。局端访问层进程再将封装得到的第二结构体发送至局端网管进程。
其中,局端网管进程接收到局端访问层进程发送的第二结构体后,提取第二结构体中的各个变量,获得各个变量的数值,即解析所述第二结构体得到经函数处理并由函数接口返回的数据。例如,局端网管进程接收到uALMsg类型的第二结构体后,提取结构体中的moduleType、operType、resType和resID变量,得到网管类型和经处理后的操作类型、资源类型和资源标识数据。
需要说明的是,局端网管进程和局端访问层进程对数据的封装方法并不仅限于上述方法,也可以使用其他的常规的数据封装方法或者自定义数据封装方法。
其中,局端网管进程在于局端访问层进程建立通信连接后,如果需要发送数据,则将封装后的数据使用相关发送函数进行发送,例如在基于LINUX的操作系统下使用send()函数进行发送。发送数据后,局端网管进程查询获取的套接字描述符即第一套接字描述符是否可读,例如使用select()函数查询所述第一套接字描述符是否可读,当select()的返回值大于0时,所述第一套接字描述符可读。当所述第一套接字描述符可读时,说明局端访问层进程发送了数据,然后使用接收函数,例如基于LINUX的操作系统下的recv()函数来接受局端访问层进程发送的数据。为节省系统处理资源,避免局端网管进程无限制地查询所述第一套接字描述符是否可读以判断是否有数据可以接收,当局端网管进程连续两次查询所述第一套接字描述符的结果都为所述第一套接字描述符不可读时,便认为局端访问层进程不返回数据,进而关闭局端网管进程的第一套接字,即关闭与局端访问层进程的通信。
其中,对于局端访问层进程而言,与局端网管进程建立了通信连接,进入接收数据的过程时,即遍历到的状态发生变化的描述符不等于局端访问层获取的局端访问层进程套接字描述符时,获取与局端网管进程进行通信的套接字(即所述第二套接字)的可读字节数,如果可读字节数不为0,则说明有对应的局端网管进程发送的数据,使用相关的接收函数接收数据,例如使用recv()接收局端网管进程发送的数据。局端访问层进程向局端网管进程发送数据时,使用相关的发送函数向局端网管进程发送所述第二结构体,例如使用send()函数进行发送。
如果获取与局端网管进程进行通信的套接字的可读字节数为0,则说明局端网管进程已关闭了其第一套接字,即取消了对局端访问层进程的连接,此时局端访问层进程也 关闭当前与对应的局端网管进程进行通信的套接字,并将对应的套接字描述符从描述符集中去掉,结束与局端网管进程的通信。
步骤S106,局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别关闭自身对应的套接字。
其中,局端网管进程和局端访问层进程的通信完成后,局端网管进程和局端访问层进程分别关闭自身对应的套接字,即局端网管进程关闭局端网管进程的第一套接字,局端访问层进程关闭局端访问层进程套接字及局端访问层进程的第二套接字,解除两者之间的通信连接。
上述的局端网管进程涉及的套接字和局端访问进程涉及的套接字,都优选为UNIX域字节流套接字。UNIX域套接字相对于常用的因特网域套接字,仅复制数据,并不执行其他处理,具有较高的通信效率,且UNIX域字节流套接字相比UNIX域数据报套接字更适用于局端网管进程和局端访问层进程通信具有长连接的特性。
图2为本申请另一示例性实施例示出的一种多应用层网管并发访问方法的流程示意图,图2中,虚线表示数据信息的传输方向。如图2所示,所述方法包括:
步骤S201,在局端访问层进程和局端网管进程分别定义套接字通信接口,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口;
步骤S202,在局端访问层进程和局端网管进程分别定义用于表示网管种类的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量;
步骤S203,各个局端网管进程分别获取第一套接字,调用各自的第一接口初始化各自的第一套接字,并向局端访问层进程发起连接请求;
步骤S204,局端访问层进程获取局端访问层进程套接字,调用局端访问层进程的第一接口初始化所述局端访问层进程套接字;
步骤S205,局端访问层查询所述局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程之间的通信连接;
步骤S206,局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量表示,将使用所述第一变量、第二变量、第三变量和第四变量表示后的数据封装成第一结构体,并调用第二接口将所述第一结构体发送至局端访问层进程;
步骤S207,局端访问层进程调用第三接口接收到所述第一结构体后,根据所述第一 结构体解析出第一变量、第二变量、第三变量和第四变量,并将所述第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处理,将函数接口处理后返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体,并调用所述第三接口将所述第二结构体发送至局端网管进程;
步骤S208,局端网管进程调用所述第三接口接收到所述第二结构体后,解析所述第二结构体得到函数接口返回的数据;
步骤S209,局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别调用第四接口关闭套接字。
其中,由于局端网管进程和局端访问层进程都需要进行套接字的初始化、数据发送、数据接收和关闭通信(即关闭套接字)。为方便对局端网管进程并发访问的管理,可以在局端访问层进程和局端网管进程分别定义套接字通信接口,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口。所述套接字通信接口为将相关的处理函数进行组合,例如将初始化套接字的相关函数组合为新的函数,所述新的函数即所述第一接口,将用于发送数据的相关函数组合为所述第二接口,以此类推。使用统一的接口来处理局端网管进程和局端访问层进程的通信和数据传输,有利于对局端网管进程并发访问的管理,使管理具有一致性,减少不同局端网管并发访问产生的通信或传输的错误与冲突。
其中,局端访问层进程在获取局端访问层进程套接字后,调用局端访问层的第一接口初始化所述局端访问层进程套接字,局端网管进程获取其第一套接字后,调用局端网管进程的第一接口初始化其第一套接字。局端网管进程调用第二接口将所述第一结构体发送至局端访问层进程,局端访问层进程调用第三接口接收所述第一结构体,并调用所述第二接口将所述第二结构体发送至局端网管进程,局端网管进程调用所述第三接口接收所述第二结构体,局端网管进程和局端访问层进程通信完成后,局端网管进程和局端访问层进程分别调用第四接口关闭自身的套接字。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,并存储在一个存储介质中,包括若干指令用以使得一台智能设备执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储数据和程序代码的介质。
相应于本申请实施例的第一方面,根据本申请实施例的第二方面,提供一种多应用 层网管并发访问装置。图3为本申请一示例性实施例示出的一种多应用层网管并发访问装置的框图,图3中,虚线表示模块间存在的数据信息传输关系。如图3所示,所述装置包括:
局端网管进程连接模块U301,用于在各个局端网管进程中分别获取第一套接字,并向局端访问层进程发起连接请求;
局端访问层进程连接模块U302,用于在局端访问层进程中轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接;
局端网管进程数据处理模块U303,用于将局端网管进程将需要发送的数据封装成第一结构体;
局端网管进程数据发送模块U304,用于将所述第一结构体发送至局端访问层进程;
局端访问层进程数据接收模块U305,用于在局端访问层进程接收到所述第一结构体;
局端访问层进程数据处理模块U306,用于根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,接收函数接口返回的数据封装为第二结构体,第一结构体和第二结构体的封装方法相同;
局端访问层进程数据发送模块U307,用于将所述第二结构体发送至局端网管进程;
局端网管进程数据接收模块U308,用于接收所述第二结构体,并解析所述第二结构体得到经函数接口的数据;
局端网管进程通信关闭模块U309,用于在和局端访问层进程的通信完成后,关闭自身对应的套接字。
局端访问层进程通信关闭模块U3010,用于在和局端网管进程的通信完成后,关闭自身对应的套接字。
其中,所述局端网管进程数据处理模块U303,可以包括:
第一变量定义子模块,用于在局端网管进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,
第一数据封装子模块,用于在局端网管进程将需要发送的数据使用所述第一变量、第二变量、第三变量和第四变量表示,将使用所述第一变量、第二变量、第三变量和第 四变量表示后的数据封装成第一结构体。
其中,所述局端访问层进程数据处理模块U306,可以包括:
第二变量定义子模块,用于在局端访问层进程预先定义用于表示网管类型的第一变量、用于表示操作类型的第二变量、用于表示资源类型的第三变量和用于表示资源标识的第四变量,
第一解析子模块,用于在局端访问层进程接收到所述第一结构体后,根据所述第一结构体解析出第一变量、第二变量、第三变量和第四变量,
传输子模块,用于将所述第一变量、第二变量、第三变量和第四变量传输至相应的函数接口进行处理;
返回数据接收子模块,用于接收函数接口返回的数据;
第二封装子模块,用于将函数接口返回的数据按照第一变量、第二变量、第三变量和第四变量封装为第二结构体。
其中,局端访问层进程连接模块U302,可以包括:
套接字描述符获取子模块,用于获取套接字描述符;
监听子模块,用于监听局端网管进程的连接请求,并将所述套接字描述加入到描述符集中;
描述符集状态查询子模块,用于查询描述符集的状态,判断描述符集的状态是否存在变化;
描述符状态查询子模块,用于如果描述符集的状态存在变化,遍历所有描述符的状态,判断是否存在状态发生变化的描述符,否则,返回描述符集状态查询模块;
描述符判断子模块,用于如果存在状态发生变化的描述符,判断状态发生变化的描述符是否等于所述套接字描述符;
通信连接建立子模块,用于如果状态发生变化的描述符等于所述套接字描述符,则接受所述局端网管进程连接请求,建立与局端网管进程的通信,将于局端网管进程通信的描述符加入到描述符集中,返回描述符集状态查询子模块,否则,局端访问层进程进入接收局端网管进程发送的数据的过程。
图4为本申请一示例性实施例示出的一种多应用层网管并发访问装置的框图,图4中,虚线表示模块间存在的数据信息传输关系。如图4所示,所述装置包括:
第一套接字接口定义模块U401,用于在局端访问层进程定义套接字通信接口;
第二套接字接口定义模块U402,用于在局端网管进程定义套接字通信接口;
局端网管进程连接模块U403,用于各个局端网管进程分别获取第一套接字,调用各自的第一接口初始化各自的第一套接字,并向局端访问层进程发起连接请求;
局端访问层进程连接模块U404,用于局端访问层进程获取局端访问层进程套接字,调用局端访问层进程的第一接口初始化所述局端访问层进程套接字,在局端访问层进程中轮询局端访问层进程套接字的可读状态,根据局端访问层进程套接字的可读状态得到局端网管进程的连接请求后,获取与局端网管进程进行通信的第二套接字,建立局端访问层进程和各个局端网管进程的通信连接;
局端网管进程数据处理模块U405,用于用于将局端网管进程将需要发送的数据封装成第一结构体;
局端网管进程数据发送模块U406,用于将所述第一结构体发送至局端访问层进程;
局端访问层进程数据接收模块U407,用于在局端访问层进程接收到所述第一结构体;
局端访问层进程数据处理模块U408,用于根据所述第一结构体解析出局端网管进程发送的数据传输至相应的函数接口进行处理,接收函数接口返回的数据封装为第二结构体,第一结构体和第二结构体的封装方法相同;
局端访问层进程数据发送模块U409,用于将所述第二结构体发送至局端网管进程;
局端网管进程数据接收模块U4010,用于接收所述第二结构体,并解析所述第二结构体得到经函数接口的数据;
局端网管进程通信关闭模块U4011,用于在和局端访问层进程的通信完成后,关闭自身对应的套接字。
局端访问层进程通信关闭模块U4012,用于在和局端网管进程的通信完成后,关闭自身对应的套接字。
其中,所述套接字通信接口包括用于初始化套接字的第一接口、用于发送数据的第二接口、用于接收数据的第三接口以及用于关闭套接字的第四接口,
局端访问层进程在获取局端访问层进程套接字后,调用局端访问层的第一接口初始化所述局端访问层进程套接字,局端网管进程获取其第一套接字后,调用局端网管进程的第一接口初始化其第一套接字。局端网管进程数据发送模块调用自身的第二接口将所述第一结构体发送至局端访问层进程,局端网管进程数据接收模块调用自身的第三接口接收所述第二结构体,
局端访问层进程数据接收模块调用自身的第三接口接收所述第一结构体,并调用自身的第二接口将所述第二结构体发送至局端网管进程,
局端网管进程通信关闭模块和局端访问层进程通信关闭模块分别调用各自的第四接口关闭自身的套接字。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者逆序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

一种多应用层网管并发访问方法及装置.pdf_第1页
第1页 / 共21页
一种多应用层网管并发访问方法及装置.pdf_第2页
第2页 / 共21页
一种多应用层网管并发访问方法及装置.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《一种多应用层网管并发访问方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种多应用层网管并发访问方法及装置.pdf(21页珍藏版)》请在专利查询网上搜索。

本申请实施例公开了一种多应用层网管并发访问方法和装置。以I/O复用的方式同时监控多个局端网管进程,当接收到局端网管进程的连接请求时,建立与局端网管进程的通信,当局端网管进程发送数据时再开始进入接收数据的过程,因而不会出现通信阻塞的情况,响应速度快,效率高,实现局端网管进程的并发访问。同时对局端网管进程和局端访问层进程之间传输的数据进行类封装,对多个局端网管进程并发的传输数据进行统一的处理,避免并发。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1