一种支持多种网络接口的套接字组件及方法转让专利

申请号 : CN201811065086.0

文献号 : CN109189718B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 熊谱翔朱天龙陈勇

申请人 : 上海睿赛德电子科技有限公司

摘要 :

本公开提供一种支持多种网络接口的套接字组件及方法,涉及通信领域和计算机领域。本公开提供的套接字组件应用于电子设备,所述套接字组件包括套接字抽象层模块和网络接口模块;所述网络接口模块包括多种类型的网络接口;所述套接字抽象层模块预先接收有用于识别网络接口的第一参数,所述套接字抽象层模块用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。本公开提供的支持多种网络接口的套接字组件及方法通过套接字抽象层模块支持多种类型的网络接口的识别与匹配,解决了对单一的网络接口的依赖,提高应用程序的通用性,降低移植难度。

权利要求 :

1.一种支持多种网络接口的套接字组件,其特征在于,应用于电子设备,所述套接字组件包括套接字抽象层模块和网络接口模块;

所述网络接口模块包括多种类型的网络接口;

所述套接字抽象层模块预先接收有用于识别网络接口的第一参数,所述套接字抽象层模块用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配;

所述套接字抽象层模块包括标准网络协议栈、自定义网络协议、网络接口操作方法以及套接字数据结构;

所述标准网络协议栈用于提供通用的网络接口实现方式,以使所述套接字抽象层模块与通用的网络接口实现匹配;

所述自定义网络协议用于提供自定义的网络接口实现方式,以满足对不同网络接口实现匹配的需求;

所述网络接口操作方法包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口的操作方法,用于匹配不同网络接口;

所述套接字数据结构用于接收并储存识别多种类型的网络接口的第一参数;

所述套接字抽象层模块用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并通过所述网络接口操作方法与所述目标网络接口进行匹配。

2.根据权利要求1所述的套接字组件,其特征在于,所述多种类型的网络接口包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口。

3.根据权利要求1所述的套接字组件,其特征在于,所述套接字组件还包括通用套接字接口模块以及虚拟文件系统模块,所述虚拟文件系统模块用于提供套接字描述符;

所述通用套接字接口模块用于在获取应用层创建的套接字以及应用层传入的第一参数后,通过函数调用所述套接字抽象层模块,将所述应用层创建的套接字以及应用层传入的第一参数传入至所述套接字抽象层模块;

所述套接字抽象层模块用于在接收到所述通用套接字接口模块传入的所述套接字及第一参数后,申请所述虚拟文件系统模块提供的套接字描述符,并对所述套接字描述符分配结构体空间,将所述第一参数设置到所述结构体空间中,以使所述套接字抽象层模块根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。

4.根据权利要求3所述的套接字组件,其特征在于,所述第一参数包括协议簇参数、套接字类型和指定协议;

所述套接字抽象层模块用于根据所述协议簇参数识别所述多种类型的网络接口;

所述套接字组件用于根据所述套接字类型确定所述套接字的传输方式;

所述应用层用于根据所述指定协议确定网络通信过程中数据传输协议。

5.一种支持多种网络接口的方法,其特征在于,应用于电子设备,所述电子设备包括权利要求1-4任一项所述的套接字组件,所述套接字组件包括套接字抽象层模块以及网络接口模块,所述网络接口模块包括多种类型的网络接口,所述方法包括:所述套接字抽象层模块接收用于识别网络接口的第一参数;

所述套接字抽象层模块根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口;

所述套接字抽象层模块与所述目标网络接口进行匹配;

所述套接字抽象层模块包括标准网络协议栈、自定义网络协议、网络接口操作方法以及套接字数据结构;

所述标准网络协议栈用于提供通用的网络接口实现方式,以使所述套接字抽象层模块与通用的网络接口实现匹配;

所述自定义网络协议用于提供自定义的网络接口实现方式,以满足对不同网络接口实现匹配的需求;

所述网络接口操作方法包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口的操作方法,用于匹配不同网络接口;

所述套接字数据结构用于接收并储存识别多种类型的网络接口的第一参数;

所述套接字抽象层模块用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并通过所述网络接口操作方法与所述目标网络接口进行匹配。

6.根据权利要求5所述的方法,其特征在于,所述多种类型的网络接口包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口。

7.根据权利要求5所述的方法,其特征在于,所述套接字组件还包括通用套接字接口模块及虚拟文件系统模块,所述套接字抽象层模块接收用于识别网络接口的第一参数的步骤包括:所述通用套接字接口模块获取应用层创建的套接字以及应用层传入的第一参数;

所述通用套接字接口模块调用所述套接字抽象层模块,将所述应用层创建的套接字以及所述应用层传入的第一参数传入至所述套接字抽象层模块;

所述套接字抽象层模块申请所述虚拟文件系统模块提供的套接字描述符;

所述套接字抽象层模块对所述套接字描述符分配结构体空间;

将所述第一参数设置到所述结构体空间中;

所述套接字抽象层模块根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口。

8.根据权利要求7所述的方法,其特征在于,所述第一参数包括协议簇参数、套接字类型和指定协议;

所述套接字抽象层模块根据所述协议簇参数识别所述多种类型的网络接口;

所述套接字组件根据所述套接字类型确定所述套接字的传输方式;

所述应用层根据所述指定协议确定网络通信过程中数据传输协议。

9.根据权利要求7所述的方法,其特征在于,所述套接字抽象层模块根据所述第一参数从多种类型的网络接口中识别出对应的目标网络接口的步骤包括:所述套接字抽象层模块根据所述目标网络接口的第二参数从第一参数中寻找用于匹配所述目标网络接口的参数;

将寻找到用于匹配所述目标网络接口的参数与所述第二参数进行对比;

如果所述寻找到用于匹配所述目标网络接口的参数与所述第二参数一致,则将所述套接字抽象层模块与所述目标网络接口进行匹配;

在匹配过后,所述套接字抽象层模块获取所述套接字描述符,将所述套接字描述符设置到所述套接字抽象层模块的结构体空间中;

设置返回参数,将所述套接字抽象层模块的结构体空间的结构体参数返回至所述应用层。

说明书 :

一种支持多种网络接口的套接字组件及方法

技术领域

[0001] 本公开涉及通信领域和计算机领域,具体而言,涉及一种支持多种网络接口的套接字组件及方法。

背景技术

[0002] 随着嵌入式系统在通信技术领域的高速发展,同一应用在面对不同网络接口的情况下,会导致应用层的需要随着不同网络接口的变化而变化,无法支持多种网络接口,更换不同的网络接口,前期的应用程序就需要重新构造,极大降低程序重复使用的效率,给开发者带来极大麻烦。

发明内容

[0003] 有鉴于此,本公开提供一种支持多种网络接口的套接字组件及方法。
[0004] 本公开提供的一种支持多种网络接口的套接字组件,应用于电子设备,所述套接字组件包括套接字抽象层模块和网络接口模块。
[0005] 所述网络接口模块包括多种类型的网络接口。
[0006] 所述套接字抽象层模块预先接收有用于识别网络接口的第一参数,所述套接字抽象层模块用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。
[0007] 进一步的,所述多种类型的网络接口包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口。
[0008] 进一步的,所述套接字组件还包括通用套接字接口模块以及虚拟文件系统模块,所述虚拟文件系统模块用于提供套接字描述符。
[0009] 所述通用套接字接口模块用于在获取所述应用层创建的套接字以及应用层传入的第一参数后,通过函数调用所述套接字抽象层模块,将所述应用层创建的套接字以及应用层传入的第一参数传入至所述套接字抽象层模块。
[0010] 所述套接字抽象层模块用于在接收到所述通用套接字接口模块传入的所述套接字及第一参数后,申请所述虚拟文件系统模块提供的套接字描述符,并对所述套接字描述符分配结构体空间,将所述第一参数设置到所述结构体空间中,以使所述套接字抽象层模块根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。
[0011] 进一步的,所述第一参数包括协议簇参数、套接字类型和指定协议。
[0012] 所述套接字抽象层模块用于根据所述协议簇参数识别所述多种类型的网络接口。
[0013] 所述套接字组件用于根据所述套接字类型确定所述套接字的传输方式。
[0014] 所述应用层用于根据所述指定协议确定网络通信过程中数据传输协议。
[0015] 进一步的,所述套接字抽象层模块包括标准网络协议栈、自定义网络协议、网络接口操作方法以及套接字数据结构。
[0016] 所述标准网络协议栈用于提供通用的网络接口实现方式,以使所述套接字抽象层模块与通用的网络接口实现匹配。
[0017] 所述自定义网络协议用于提供自定义的网络接口实现方式,以满足对不同网络接口实现匹配的需求。
[0018] 所述网络接口操作方法包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口的操作方法,用于匹配不同网络接口。
[0019] 所述套接字数据结构用于接收并储存识别多种类型的网络接口的第一参数。
[0020] 所述套接字抽象层模块用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并通过所述网络接口操作方法与所述目标网络接口进行匹配。
[0021] 本公开提供一种支持多种网络接口的方法,应用于电子设备,所述电子设备包括上述的套接字组件,所述套接字组件包括套接字抽象层模块以及网络接口模块,所述网络接口模块包括多种类型的网络接口,所述方法包括:
[0022] 所述套接字抽象层模块接收用于识别网络接口的第一参数。
[0023] 所述套接字抽象层模块根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口。
[0024] 所述套接字抽象层模块与所述目标网络接口进行匹配。
[0025] 进一步的,所述多种类型的网络接口包括网络模块类型的网络接口、网络芯片类型的网络接口及网络协议栈类型的网络接口。
[0026] 进一步的,所述套接字组件还包括通用套接字接口模块及虚拟文件系统模块,所述套接字抽象层模块接收用于识别网络接口的第一参数的步骤包括:
[0027] 所述通用套接字接口模块获取应用层创建的套接字以及应用层传入的第一参数。
[0028] 所述通用套接字接口模块调用所述套接字抽象层模块,将所述应用层创建的套接字以及应用层传入的第一参数传入至所述套接字抽象层模块。
[0029] 所述套接字抽象层模块申请所述虚拟文件系统模块提供的套接字描述符。
[0030] 所述套接字抽象层模块对所述套接字描述符分配结构体空间。
[0031] 将所述第一参数设置到所述结构体空间中。
[0032] 所述套接字抽象层模块根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口。
[0033] 进一步的,所述第一参数包括协议簇参数、套接字类型和指定协议。
[0034] 所述套接字抽象层模块根据所述协议簇参数识别所述多种类型的网络接口。
[0035] 所述套接字组件根据所述套接字类型确定所述套接字的传输方式。
[0036] 所述应用层根据所述指定协议确定网络通信过程中数据传输协议。
[0037] 进一步的,所述套接字抽象层模块根据所述第一参数从多种类型的网络接口中识别出对应的目标网络接口的步骤包括:
[0038] 所述套接字抽象层模块根据所述目标网络接口的第二参数从第一参数中寻找用于匹配所述目标网络接口的参数。
[0039] 将寻找到用于匹配所述目标网络接口的参数与所述第二参数进行对比。
[0040] 如果所述寻找到用于匹配所述目标网络接口的参数与所述第二参数一致,则将所述套接字抽象层模块与所述目标网络接口进行匹配。
[0041] 在匹配过后,所述套接字抽象层模块获取所述套接字描述符,将所述套接字描述符设置到所述套接字抽象层模块的结构体空间中。
[0042] 设置返回参数,将所述套接字抽象层模块的结构体空间的结构体参数返回至应用层。
[0043] 本公开提供的支持多种网络接口的套接字组件及方法,在套接字抽象层模块预先接收有用于识别网络接口的第一参数,根据第一参数从多种类型的网络接口中识别出对应的目标网络接口,并与目标网络接口进行匹配,该套接字组件及方法支持多种类型的网络接口的识别与匹配,更换不同的网络接口,只需对更换的网络接口再次进行识别,并重新匹配,不用对前期的应用程序重新构造,解决了应用层对单一的网络接口的依赖,提高应用程序的通用性。
[0044] 为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0045] 为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0046] 图1为本公开所提供的一种套接字组件的方框示意图。
[0047] 图2为本公开所提供的一种套接字组件的另一种方框示意图。
[0048] 图3为本公开所提供的一种支持网络接口的方法的流程示意图。
[0049] 图4为本公开所提供的一种支持网络接口的方法中套接字抽象层模块接收第一参数的流程示意图。
[0050] 图5为本公开所提供的一种支持网络接口的方法中套接字抽象层模块与目标网络接口识别匹配的流程示意图。
[0051] 图6为本公开所提供的一种支持网络接口的方法中套接字抽象层模块与目标网络接口匹配结束后的流程示意图。
[0052] 图7为本公开所提供的一种接收/发送数据的流程示意图。
[0053] 图标:100-套接字组件;10-套接字接口模块;20-虚拟文件系统模块;30-套接字抽象层模块;31-套接字数据结构;32-标准网络协议栈;33-自定义网络协议;34-网络接口操作方法;40-网络接口模块;41-网络模块类型的网络接口;42-网络芯片类型的网络接口;43-网络协议栈类型的网络接口。

具体实施方式

[0054] 下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0055] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0056] 随着嵌入式系统在通信技术领域的高速发展,现有同一应用在面对不同网络接口,会导致应用层的需要随着不同网络接口的变化而变化,无法支持多种网络接口,更换不同的网络接口,前期的应用程序就需要重新构造,极大降低程序重复使用的效率,给开发者带来极大麻烦。
[0057] 基于上述研究,本公开提供一种支持多种网络接口的套接字组件及方法。
[0058] 请结合参阅图1,图1为本公开所提供的一种套接字组件100的方框示意图。本公开提供的一种套接字组件100,应用于电子设备,所述套接字组件100包括套接字抽象层模块30和网络接口模块40。
[0059] 可选地,所述电子设备的具体类型不受限制,例如,可以是,但不限于,智能音箱、智能家居、智慧能源、智能电表等具有数据通信功能的嵌入式设备。
[0060] 进一步的,所述网络接口模块40包括多种类型的网络接口。
[0061] 所述套接字抽象层模块30预先接收有用于识别网络接口的第一参数,所述套接字抽象层模块30用于根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。
[0062] 其中,所述多种类型的网络接口包括网络模块类型的网络接口41、网络芯片类型的网络接口42及网络协议栈类型的网络接口43,但是所述多种类型的网络接口包括但不限于本公开所提及的网络接口。
[0063] 进一步的,所述套接字组件100还包括通用套接字接口模块10以及虚拟文件系统模块20,所述虚拟文件系统模块20用于提供套接字描述符。
[0064] 所述通用套接字接口模块10用于在获取所述应用层创建的套接字以及应用层传入的第一参数后,通过函数调用所述套接字抽象层模块30,将所述应用层创建的套接字以及应用层传入的第一参数传入至所述套接字抽象层模块30。
[0065] 其中,通过函数调用所述套接字抽象层模块30,将所述应用层创建的套接字传入至所述套接字抽象层模块30后,所述套接字抽象层模块30对所述应用层创建的套接字进行设置,包括设置套接字的参数以及设置注册回调函数,其中通过设置套接字参数,以用于匹配所述目标网络接口;通过设置注册回调函数,在与所述目标网络接口匹配完成后,以通过注册回调函数调用所述目标网络接口。
[0066] 所述套接字抽象层模块30用于在接收到所述通用套接字接口模块10传入的所述套接字及第一参数后,申请所述虚拟文件系统模块20提供的套接字描述符,并对所述套接字描述符分配结构体空间,将所述第一参数设置到所述结构体空间中,以使所述套接字抽象层模块30根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。
[0067] 其中,所述套接字抽象层模块30申请所述虚拟文件系统模块20提供的套接字描述符,并对所述套接字描述符分配结构体空间,所述套接字抽象层模块30为套接字描述符分配的结构体空间为空,将所述第一参数设置到所述结构体空间后,以使所述套接字抽象层模块30根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并与所述目标网络接口进行匹配。
[0068] 进一步的,所述第一参数包括协议簇参数、套接字类型和指定协议。
[0069] 所述套接字抽象层模块30用于根据所述协议簇参数识别所述多种类型的网络接口。
[0070] 所述套接字组件100用于根据所述套接字类型确定所述套接字的传输方式。
[0071] 所述应用层用于根据所述指定协议确定网络通信过程中数据传输协议。
[0072] 其中,当所述第一参数传入至所述套接字抽象层模块30后,所述套接字抽象层模块30包括用于识别多种类型网络接口的协议簇参数。
[0073] 所述套接字抽象层模块30根据所述目标网络接口的第二参数从所述协议簇参数中寻找用于匹配所述目标网络接口的参数,若寻找到用于匹配所述目标网络接口的参数,所述协议簇参数就已识别所述目标网络接口的类型。
[0074] 所述套接字抽象层模块30将寻找到用于匹配所述目标网络接口的参数与所述第二参数进行对比,如果一致,则所述套接字抽象层模块30与所述目标网络接口进行匹配。所述目标网络接口的第二参数为所述目标网络接口的特定参数,类型不同的网络接口,其特定参数也不同。
[0075] 进一步的,当所述目标网络接口进行更换时,所述套接字抽象层模块30只需要根据待更换的目标网络接口的第三参数,在所述协议簇参数中寻找到的用于匹配待更换的目标网络接口的参数,将用于匹配待更换的目标网络接口的参数与所述第三参数进行对比,如果用于匹配待更换的目标网络接口的参数与所述第三参数一致,则所述套接字抽象层模块30与待更换的目标网络接口进行匹配,可以理解地,所述第三参数也为所述待更换的目标网络接口的特定参数,进而,应用层通过这种方式解决了对单一的网络接口的依赖,并提高了程序应用的通用性。
[0076] 进一步的,请结合参阅图2,所述套接字抽象层模块30包括标准网络协议栈32、自定义网络协议33、网络接口操作方法34以及套接字数据结构31。
[0077] 所述标准网络协议栈32用于提供通用的网络接口实现方式,以使所述套接字抽象层模块30与通用的网络接口实现匹配。
[0078] 所述自定义网络协议33用于提供自定义的网络接口实现方式,以满足对不同网络接口实现匹配的需求。
[0079] 所述网络接口操作方法34包括网络模块类型的网络接口41、网络芯片类型的网络接口42及网络协议栈类型的网络接口43的操作方法,用于匹配不同网络接口。
[0080] 所述套接字数据结构31用于接收并储存识别多种类型的网络接口的第一参数。
[0081] 所述套接字抽象层模块30根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口,并通过所述网络接口操作方法34与所述目标网络接口进行匹配。
[0082] 其中,所述套接字抽象层模块30根据所述第一参数中的协议簇参数识别所述目标网络接口属于哪种类型的网络接口后,并将所述目标网络接口的特定参数与用于匹配所述目标网络接口的参数完成对比后,需进行匹配时,所述套接字抽象层模块30则利用标准网络协议栈32或者自定义网络协议33通过所述网络接口操作方法34与所述目标网络接口进行匹配。
[0083] 所述套接字抽象层模块30与所述目标网络接口匹配完成后,操作所述目标网络接口进行初始化设置,以准备在应用层与所述目标网络接口进行数据传输。
[0084] 所述套接字抽象层模块30与所述目标网络接口匹配完成后,所述套接字抽象层模块30获取所述套接字描述符,将所述套接字描述符设置到所述套接字抽象层模块30的结构体空间中。
[0085] 同时所述套接字抽象层模块30设置返回参数,将所述套接字抽象层模块30的结构体空间的结构体参数返回至所述应用层,实现应用层与网络硬件层之间的数据转换。
[0086] 请结合参阅图3,是本公开提供一种支持多网络接口的方法的流程示意图,应用于电子设备,可选地,所述电子设备的具体类型不受限制,例如,可以是,但不限于,智能音箱、智能家居、智慧能源、智能电表等具有数据通信功能的嵌入式设备。
[0087] 所述电子设备包括图1所示的套接字组件100,所述套接字组件100包括套接字抽象层模块30以及网络接口模块40,所述网络接口模块40包括多种类型的网络接口,下面将对图3所示的具体流程进行详细阐述。
[0088] 步骤S10:套接字抽象层模块30接收用于识别网络接口的第一参数。
[0089] 步骤S20:所述套接字抽象层模块30根据所述第一参数从所述多种类型的网络接口中识别出对应的目标网络接口。
[0090] 步骤S30:所述套接字抽象层模块30与所述目标网络接口进行匹配。
[0091] 其中,所述多种类型的网络接口包括网络模块类型的网络接口41、网络芯片类型的网络接口42及网络协议栈类型的网络接口43,但是所述多种类型的网络接口包括但不限于本公开所提及的网络接口。
[0092] 请结合参阅图4,所述套接字组件100还包括通用套接字接口模块10及虚拟文件系统模块20,在所述套接字抽象层模块30根据所述第一参数从多种类型的网络接口中识别出对应的目标网络接口之前,所述套接字抽象层模块30接收用于识别网络接口的第一参数的过程包括以下步骤:
[0093] 步骤S11:所述通用套接字接口模块10获取应用层创建的套接字以及应用层传入的第一参数。
[0094] 步骤S12:所述通用套接字接口模块10调用所述套接字抽象层模块30,将所述应用层创建的套接字以及应用层传入的第一参数传入至所述套接字抽象层模块30。
[0095] 其中,通过函数调用所述套接字抽象层模块30,将所述应用层创建的套接字传入至所述套接字抽象层模块30后,所述套接字抽象层模块30对所述应用层创建的套接字进行设置,包括设置套接字的参数以及设置注册回调函数,其中通过设置套接字参数,以用于匹配所述目标网络接口;通过设置注册回调函数,在与所述目标网络接口匹配完成后,以通过注册回调函数调用所述目标网络接口。
[0096] 步骤S13:所述套接字抽象层模块30申请所述虚拟文件系统模块20提供的套接字描述符。
[0097] 步骤S14:所述套接字抽象层模块30对所述套接字描述符分配结构体空间。
[0098] 其中,所述套接字抽象层模块30对所述套接字描述符分配结构体空间,此时所述结构体空间为空,所述套接字抽象层模块30还未获取到所述套接字描述符。
[0099] 步骤S15:将所述第一参数设置到所述结构体空间中。
[0100] 其中,将所述第一参数设置到所述结构体空间后,以使所述套接字抽象层模块30根据所述第一参数执行上述步骤S20,进而以使所述套接字抽象层模块30根据所述第一参数从多种类型的网络接口中识别出对应的目标网络接口。
[0101] 进一步,所述第一参数包括协议簇参数、套接字类型和指定协议。
[0102] 所述套接字抽象层模块30根据所述协议簇参数识别所述多种类型的网络接口。
[0103] 所述套接字组件100根据所述套接字类型确定所述套接字的传输方式。
[0104] 所述应用层根据所述指定协议确定网络通信过程中数据传输协议。
[0105] 请结合参阅图5,所述套接字抽象层模块30根据所述第一参数从多种类型的网络接口中识别出对应的目标网络接口的过程还包括以下步骤:
[0106] 步骤S21:所述套接字抽象层模块30根据所述目标网络接口的第二参数从第一参数中寻找用于匹配所述目标网络接口的参数。
[0107] 其中,当所述第一参数传入至所述套接字抽象层模块30后,所述套接字抽象层模块30包括用于识别多种类型网络接口的协议簇参数,所述套接字抽象层模块30根据所述目标网络接口的第二参数从所述协议簇参数中寻找用于匹配所述目标网络接口的参数。
[0108] 所述目标网络接口的第二参数为所述目标网络接口的特定参数,类型不同的网络接口,其特定参数也不同。
[0109] 步骤S22:将寻找到用于匹配所述目标网络接口的参数与所述第二参数进行对比。
[0110] 步骤S23:判断所述寻找到用于匹配所述目标网络接口的参数与所述第二参数是否一致,如果所述寻找到用于匹配所述目标网络接口的参数与所述第二参数一致,执行上述步骤S30,将所述套接字抽象层模块30与所述目标网络接口进行匹配,如果所述寻找到用于匹配所述目标网络接口的参数与所述第二参数不一致,执行步骤S231。
[0111] 步骤S231:返回创建失败的结果。
[0112] 其中,如果所述寻找到用于匹配所述目标网络接口的参数与所述第二参数不一致,所述套接字抽象层模块30向所述应用层返回创建失败的结果。
[0113] 进一步的,请结合参阅图6,在匹配过后,所述套接字抽象层模块30操作所述目标网络接口进行初始化设置,以准备在应用层与所述目标网络接口进行数据传输,并且所述套接字抽象层模块30执行步骤S31至步骤S32。
[0114] 步骤S31:所述套接字抽象层模块30获取所述套接字描述符,将所述套接字描述符设置到所述套接字抽象层模块30的结构体空间中。
[0115] 步骤S32:设置返回参数,将所述套接字抽象层模块30的结构体空间的结构体参数返回至应用层。
[0116] 其中,所述套接字抽象层模块30设置返回参数,将所述结构体参数返回至所述应用层,实现应用层与网络硬件层之间的数据转换。
[0117] 进一步的,请结合参阅图7,图7为本公开提供的一种发送/接收数据流程示意图,图7所示的发送/接收数据流程是已在所述套接字抽象层模块30与所述目标网络接口完成匹配,实现应用层与网络硬件层数据转换之后所进行的。
[0118] 步骤S40:应用层启动发送/接收数据。
[0119] 步骤S41:调用套接字接口模块10,进行数据发送/接收的准备工作。
[0120] 其中,所述应用层通过函数调用所述套接字接口模块10,所述套接字接口模块10进行数据发送/接收的准备工作。
[0121] 步骤S42:调用虚拟文件系统模块20,所述套接字接口模块10获取套接字描述符。
[0122] 其中,所述套接字接口模块10通过函数调用所述虚拟文件系统模块20,所述套接字接口模块10获取所述虚拟文件系统模块20提供的套接字描述符。
[0123] 步骤S43:判断套接字描述符是否获取成功,如果获取失败,进行步骤S431,如果获取成功,则执行步骤S44。
[0124] 步骤S431:返回发送/接收失败的结果。
[0125] 其中,如果所述套接字描述获取失败,所述套接字接口模块10向所述应用层返回发送/接收失败的结果。
[0126] 步骤S44:调用套接字抽象层模块30进行数据发送/接收操作。
[0127] 其中,所述套接字接口模块10通过函数调用所述套接字抽象层模块30,所述套接字抽象层模块30进行数据发送/接收操作。
[0128] 步骤S45:判断数据发送/接收是否成功,如果数据发送/接收失败,进行步骤S451,如果数据发送/接收成功,则执行步骤S452。
[0129] 步骤S451:返回发送/接收失败的结果。
[0130] 其中,如果所述数据发送/接收失败,所述套接字抽象层模块30向所述应用层返回数据发送/接收失败的结果。
[0131] 步骤452:返回数据发送/接收成功的结果,发送/接收结束。
[0132] 其中,如果所述数据发送/接收成功,所述套接字抽象层模块30向所述应用层返回数据发送/接收成功的结果。
[0133] 综上,本公开提供的支持多种网络接口的套接字组件及方法,在套接字抽象层模块预先传入有用于识别网络接口的第一参数,根据第一参数从多种类型的网络接口中识别出对应的目标网络接口,并与目标网络接口进行匹配,该套接字组件及方法通过套接字抽象层支持多种类型的网络接口的识别与匹配,更换不同的网络接口,只需对更换的网络接口再次进行识别,并重新匹配,不用对前期的应用程序重新构造,解决了应用层对单一的网络接口的依赖,提高程序设计的通用性,缩短开发周期,避免重复设计。
[0134] 在本公开所提供的实施例中,应该理解到,所揭露的组件和方法,也可以通过其它的方式实现。以上所描述的组件和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开实施例的组件、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0135] 另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0136] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。
[0137] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0138] 以上所述仅为本公开的可选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。