用户数据报协议UDP端口的复用方法、装置及设备与流程

    专利2022-07-07  142


    本文件涉及通信技术领域,尤其涉及用户数据报协议udp端口的复用方法、装置及设备。



    背景技术:

    用户数据报协议(userdatagramprotocol,udp)属于开放式系统互连(opensysteminterconnect,osi)参考模型中的传输层协议,用于提供无连接的不可靠消息传输服务。

    在传统的基于udp协议的数据传输业务场景中,可能存在多个服务器或/或客户端同时和同一个设备交互的情况,如图1所示,服务器和客户端a同时与设备交互,或者,客户端a和客户端b可能同时与设备交互。针对该情况,目前常见的处理方案有如下两种,一种是设备针对每一个服务器/客户端的数据交互,都开一个对外交互的udp端口,但这种处理方案对设备的端口资源占用高;而且,如果同一个网络下有很多的设备,对路由器的udp端口资源消耗很大。另一种是设备采用同一个udp端口与多个服务器/客户端做数据交互,但由于各个操作系统的差异性,设备的udp端口复用实现逻辑不能支持跨平台,只能在特定的平台上使用。

    因此,需要提供更加有效的方案。



    技术实现要素:

    本说明书实施例提供一种用户数据报协议udp端口的复用方法,用以消除udp套接字跨平台的差异,支持设备的跨平台使用,减少设备在跨平台场景运行的开发成本。

    本说明书实施例还提供一种用户数据报协议udp端口的复用方法,包括:

    获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    解析所述取流数据包,得到请求取流的客户端的地址信息;

    创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    本说明书实施例还提供一种用户数据报协议udp端口的复用方法,包括:

    获取设备的第一套接字监听到的数据包,所述第一套接字为已有的绑定于所述设备的udp端口的套接字;

    解析所述数据包,得到请求数据的客户端的地址信息;

    创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述设备的同一udp端口;

    选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输数据。

    本说明书实施例还提供一种用户数据报协议udp端口的复用装置,包括:

    获取模块,用于获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    第一处理模块,用于解析所述取流数据包,得到请求取流的客户端的地址信息;

    第二处理模块,用于创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    数据传输模块,用于选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    本说明书实施例还提供一种用户数据报协议udp端口的复用装置,包括:

    获取模块,用于获取设备的第一套接字监听到的数据包,所述第一套接字为已有的绑定于所述设备的udp端口的套接字;

    第一处理模块,用于解析所述数据包,得到请求数据的客户端的地址信息;

    第二处理模块,用于创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述设备的同一udp端口;

    数据传输模块,用于选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输数据。

    本说明书实施例还提供一种电子设备,其特征在于,包括:

    处理器;以及

    被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述的方法的步骤。

    本说明书实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行如上述的方法的步骤。

    本说明书一个实施例实现了,在已有udp套接字监听到客户端的取流数据包时,依据客户端的地址信息创建新的udp套接字并绑定于该已有udp套接字绑定的udp端口,再选择新的udp套接字进行数据传输,而无需考虑取流数据包是由哪个udp套接字接收的,从而消除不同操作系统的平台中udp套接字对udp端口的独占规则的差异,实现设备udp端口的跨平台复用。

    附图说明

    此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:

    图1为本说明书提供的传统的客户端、设备和服务器的结构示意图;

    图2为本说明书一实施例提供的用户数据报协议udp端口的跨平台应用方法的流程示意图;

    图3为本说明书一实施例提供的客户端、设备和服务器的结构示意图;

    图4为本说明书一实施例提供的源端-udp套接字-业务模块的映射关系的示意图;

    图5为本说明书另一实施例提供的用户数据报协议udp端口的跨平台应用方法的流程示意图;

    图6为本说明书一实施例提供的用户数据报协议udp端口的跨平台应用装置的结构示意图;

    图7为本说明书另一实施例提供的用户数据报协议udp端口的跨平台应用装置的结构示意图;

    图8为本说明书一实施例提供的一种电子设备的结构示意图。

    具体实施方式

    为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。

    正如背景技术陈述的,由于各个操作系统的差异性,如在windows平台中,由于windows平台的端口先占规则,只有先绑定udp端口的套接字才能收到外部服务器/客户端发进来的数据,后绑定udp端口的套接字是收不到任何数据的;而在linux平台中,由于linux平台的后占规则,只有后绑定udp端口的套接字才能收到外部服务器/客户端发进来的数据,先绑定udp端口的套接字是收不到任何数据的,这就是不同操作系统的平台中udp套接字对udp端口的独占规则的差异,这种差异导致实际实现时无法依据udp套接字进行数据匹配。基于此,本说明书提供了一种用户数据报协议udp端口的复用方法,在已有udp套接字监听到客户端的取流数据包时,依据客户端的地址信息创建新的udp套接字并绑定于该已有udp套接字绑定的udp端口,再选择新的udp套接字进行数据传输,而无需考虑取流数据包是由哪个udp套接字接收的,从而消除不同操作系统的平台中udp套接字对udp端口的独占规则的差异,实现设备udp端口的跨平台复用。

    其中,取流数据包携带客户端的地址信息,如ip地址和端口信息。

    以下结合附图,详细说明本说明书各实施例提供的技术方案。

    图2为本说明书一实施例提供的用户数据报协议udp端口的跨平台应用方法的流程示意图,应用于支持udp协议的监控设备,参见图2,所述方法具体可以包括如下步骤:

    步骤202、获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    其中,所述取流数据包用于请求/指示获取所述监控设备的监控数据。

    不难理解的是,在执行步骤202之前,方法还包括:预建立链接的步骤,参见图3,所述预建立链接的步骤包括:

    s1、监控设备注册到服务器

    所述监控设备启动时创建第三套接字(如图3中的udpsocketa),所述第三套接字和所述第一套接字绑定于所述监控设备的同一udp端口,记为udp端口a;生成所述服务器的地址信息(包括ip地址和端口port信息)与所述第三套接字之间的映射关系;选择与所述服务器的地址信息存在映射关系的所述第三套接字向所述服务器发送注册报文,如以一个固定时间间隔通过udp端口a向服务器发送注册报文,同时服务器会回复监控设备的心跳响应,实现监控设备向服务端的注册和心跳维持。在此过程中,服务器会记录下监控设备的外网ip地址和外网端口信息。

    s2、客户端和监控设备建立链接

    当客户端尝试获取监控设备的视频流时,客户端需要首先向服务器请求对应监控设备的外网ip地址和外网端口信息,客户端在拿到服务器返回的监控设备的外网地址和端口信息后,会和监控设备之间建立udp的通道,为后续的数据交互做准备。

    s3、客户端和监控设备进行数据交互

    监控设备和客户端基于udp的可靠传输协议进行视频传输,确保视频预览的质量和用户体验。所谓的可靠传输协议一般会在监控设备的模块内部创建一个udpsocket或是由外部使用者传入一个udpsocket,并且该socket需要绑定bind到监控设备本地udp端口a上,从而实现和客户端的通信。例如:创建udpsocketb和udpsocketc,udpsocketb和客户端a通信,udpsocketc和客户端b通信。

    基于该预建立链接的步骤,步骤202的一种实现方式可以为:

    所述取流数据包为服务器响应所述客户端的取流请求发送的,所述取流请求用于请求获取所述监控设备采集的监控数据。

    具体地:客户端向服务器发送取流请求,所述取流请求携带监控设备的标识,还可携带监控设备的地址信息(如ip地址和端口信息),用于请求获取所述监控设备采集的监控数据;服务器响应所述取流请求向监控设备发送取流数据包,取流数据包中可包括所述客户端的地址信息(如ip地址和端口信息),用于命令监控设备向客户端传输监控数据。

    步骤202的另一种实现方式可以为:

    所述取流数据包为所述客户端基于所述监控设备的地址信息发送的,用于请求监控数据,所述监控设备的地址信息为所述客户端从所述服务器请求获取的。

    具体地:客户端从服务器获取监控设备的地址信息之后,可直接向监控设备发起取流数据包。

    其中,第一套接字可以为所述监控设备已有套接字中的任意一个,也可以为约定的固定的套接字,如与服务器通信的第三套接字。

    基于此,本实施例基于步骤202的两种实现方式,提供了两种可行的发送取流数据包的交互方式,使得客户端既可以通过服务器向监控设备发送取流数据包,也可以直接向监控设备发送取流数据包,从而可确保客户端取流过程的可靠性以及取流便利性。

    而且,本实施例在此示出了步骤202的两种具体实现方式。当然,应理解,步骤202也可以采用其它的方式实现,本实施例对此不作限制。

    在步骤202的上述两种实现方式的基础上,考虑到不同操作系统中套接字对udp端口的独占方式不同,因此,在执行步骤202之前,还可对步骤2022的第一套接字也可进行适应性配置,如在windows平台中,第一套接字一般配置为监控设备首次创建的套接字,即服务器的地址信息映射的第三套接字;在linux平台中,第一套接字一般配置为监控设备创建第二套接字之前最后创建的套接字,结合图3,例如本次请求取流的是客户端b,若在此之前监控设备先后创建了分别与服务器和客户端a通信的udpsocketa和udpsocketb,则第一套接字是指udpsocketb,而若在此之前监控设备仅创建了与服务器通信的udpsocketa,则第一套接字是指udpsocketa,即第三套接字。

    基于此,本实施例通过基于平台操作系统的特性,适应性地从已有套接字中选择套接字作为第一套接字,使得套接字对udp端口的复用更加合理,进而确保整个取流过程中udp端口的跨平台复用。

    步骤204、解析所述取流数据包,得到请求取流的客户端的地址信息;

    其中,请求取流的客户端可能仅有一个,也可能有多个。

    步骤206、创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    若请求取流的客户端的数量仅有一个,则步骤206的实现方式可以为:

    创建一个套接字,记为第二套接字,并将该第二套接字绑定于所述第一套接字绑定的udp端口;然后,生成所述客户端的地址信息与所述第二套接字之间的映射关系。参见图3,假设请求取流的是客户端a,创建的第二套接字为udpsocketb,则生成的映射关系可以为客户端aip地址 port----udpsocketb。

    若请求取流的客户端的数量为多个,则步骤206的实现方式可以为:

    创建与所述请求取流的客户端数量相同的第二套接字,并将创建的第二套接字均绑定于所述第一套接字绑定的udp端口;为各客户端的地址信息分别配置一第二套接字,生成各客户端的地址信息与各第二套接字之间的映射关系,各客户端的地址信息映射的第二套接字唯一且不同。参见图3,假设请求取流的是客户端a和客户端b,则创建两个套接字,如udpsocketb和udpsocketc,并分别配置给客户端a和客户端b的地址信息,生成的映射关系包括:客户端aip地址 port----udpsocketb,客户端aip地址 port----udpsocketc。

    基于此,本实施例中,设备不仅支持服务器 一个或多个客户端的udp端口复用,还支持多个客户端的udp端口复用,而且,不均是前一种udp端口复用还是后一种udp端口复用,设备均无需考虑接收数据的udp套接字是哪个,而是仅关注发送数据的源端(如服务器、客户端)的地址信息,并依据源端得地址信息选择对应的udp套接字进行数据传输,从而可支持多种形式的udp端口复用。而且,本实施例在此示出了步骤206的两种具体实现方式。当然,应理解,步骤206也可以采用其它的方式实现,本实施例对此不作限制。

    步骤208、选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    需要说明的是,在构建完成映射关系之后,监控设备无需关注取流数据包是由哪个udp套接字接收的,而是关注请求取流的客户端的地址信息,并依据客户端的地址信息查找存在映射关系的套接字并通过查找出的套接字向所述客户端传输监控数据。

    参见图3,以客户端a和客户端b同时请求取流为例,监控设备依据步骤204解析出的客户端a和客户端b的地址信息以及步骤206生成的映射关系,查找出客户端a的地址信息映射的套接字udpsocketb,客户端b的地址信息映射的套接字udpsocketc,并使用udpsocketb向客户端a传输监控数据,使用udpsocketc向客户端b传输监控数据。

    综上所述,本实施例在已有udp套接字监听到客户端的取流数据包时,依据客户端的地址信息创建新的udp套接字并绑定于该已有udp套接字绑定的udp端口,再选择新的udp套接字进行数据传输,而无需考虑取流数据包是由哪个udp套接字接收的,从而消除不同操作系统的平台中udp套接字对udp端口的独占规则的差异,实现设备udp端口的跨平台复用。

    在图2对应的实施例的基础上,参见图3,在另一可行实施例中,考虑到可能出现短时间多个服务器或客户端同时与设备交互的情况,为确保通信可靠性,本实施例还引入了映射关系表及其维护规则,具体地:

    首先,将预建立链接的步骤中为与服务器通信生成的服务器的地址信息与第三套接字之间的映射关系,添加至映射关系表中;然后,在接收到来自服务器的数据传输命令时,基于所述服务器的地址信息,从映射关系表中查找出与所述服务器的地址信息存在映射关系的第三套接字,并使用所述第三套接字向所述服务器传输对应数据。

    其次,以上述多个客户端复用udp端口为例,将各客户端的地址信息与各第二套接字之间的映射关系添加至映射关系表中;以多个客户端中的目标客户端为例,上述步骤208具体可以为:基于目标客户端的地址信息,从所述映射关系表中查找出所述目标客户端的地址信息对应的目标第二套接字;选择所述目标客户端的地址信息对应的目标第二套接字向所述目标客户端传输监控数据;同理,可查找所述多个客户端中的其他客户端的地址信息对应的第二套接字,并使用对应的第二套接字进行数据传输。

    进一步地,映射关系表的维护规则包括:

    维护规则1、若检测到传输异常或传输完成,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除;当再次监听到向所述目标客户端传输监控数据的命令时,重新生成所述目标客户端的地址信息对应的映射关系。

    其中,传输异常可以是指网络异常等导致的传输意外停止的情况,传输完成可以是指基于客户端发出的停止传输指示而正常停止传输数据的情况。

    基于上述维护规则1,本实施例通过进行映射关系的及时创建和及时删除,确数据传输的安全可靠性。

    维护规则2、若检测到传输异常或传输完成,则维持所述目标客户端的地址信息对应的映射关系;当再次监听到向所述目标客户端传输监控数据的命令时,基于维持的所述目标客户端的地址信息对应的映射关系,选择所述目标第二套接字向所述客户端传输监控数据。

    进一步地,为避免数据冗余,降低设备侧的数据处理压力,维护规则2还包括若所述目标客户端的地址信息对应的映射关系的空闲时长超出预设时长阈值,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除。

    基于上述维护规则1,本实施例通过进行映射关系的缓存及多次利用,确数据传输的高效性。

    综上所述,本实施例在图2对应的实施例的基础上,通过引入映射关系表并制定对应的映射关系表维护规则,使得源端的地址信息和套接字之间的映射关系的使用更加安全可靠或高效,进而提高设备udp端口的跨平台复用的安全可靠或高效。

    下面参见图3,从设备内部模块的角度对上述复用实现逻辑进行详细说明:

    假设复用的设备端口为udp端口a,复用该udp端口a的有服务器、客户端a和客户端b,则首先所有需要依赖udp端口a对外通信的链路都创建自己的udpsocket,并bind到udp端口a上。这里需要注意的是,每个创建并绑定到udp端口a上的udpsocket都需要记录一个目的通信的对端ip和port信息。如图4所示,udpsocketa假定和服务端通信,udpsocketb和客户端a通信,udpsocketc和客户端b通信,这三个udpsocket都绑定到udp端口a上。基于此映射关系,设备不再依赖udpsocket来做业务数据的分流,屏蔽了端口复用逻辑在不同平台的差异。

    另外,不难理解的是,图4中的服务器业务处理模块、客户端a业务处理模块和客户端b业务处理模块可在生成对应的套接字的同时划分的,而其划分规则是指对设备的业务处理模块在功能上的划分,而非对业务处理模块在硬件上的划分。

    在这种映射关系基础上,select模型中接收到的数据需要先解析出收到的包的源地址(ip地址)和端口信息,之后将数据包连同这个包的源地址和端口信息传递给数据转发模块。由此,select模型可只关注数据是从哪个源端发过来的,而无需关注是哪个udpsocket收到的数据,udpsocket跨平台的差异便消除了。如解析接收到的取流数据包,得到客户端b的ip地址和端口信息,则将取流数据包和客户端b的ip地址和端口信息传递给数据转发模块。

    数据转发模块在收到数据后,解析出数据包对应的源地址和端口,依据图4中的映射关系,找到对应的业务处理模块,并将数据包对应的业务数据传递给对应的业务处理模块。如解析出的是客户端b的ip地址和端口信息,则传递给客户端b业务处理模块。

    当各个业务处理模块需要发送数据给服务端或是客户端时,先将数据包以及对应目标地址和端口信息传递给数据转发模块,数据转发模块解析出该数据包对应的目标地址和端口,并在内存的映射关系表(如图4)中找到目标地址和端口对应的内部udpsocket,然后通过这个udpsocket将数据发送给目标地址和端口。如客户端b业务处理模块需要发送数据时,直接将数据包及客户端b的ip地址和端口信息传递给数据转发模块,数据转发模块解析出客户端b的ip地址和端口信息,并查找到与客户端b的ip地址和端口信息存在映射关系的udpsocketb,并通过udpsocketb向客户端b发送数据。

    由此,可屏蔽跨平台udpsocket端口复用的问题,并且实现了设备和外部端(服务器或客户端)的数据发送和接收逻辑。

    图5为本说明书另一实施例提供的用户数据报协议udp端口的跨平台应用方法的流程示意图,应用于支持udp协议的设备,参见图5,所述方法具体可以包括如下步骤:

    步骤502、获取设备的第一套接字监听到的数据包,所述第一套接字为已有的绑定于所述设备的udp端口的套接字;

    相对于图2对应的实施例中的监控设备,本实施例中的设备是指支持udp协议且具备数据收发功能的设备,包括数据采集设备(如监控设备)、数据存储设备等。

    步骤504、解析所述数据包,得到请求数据的客户端的地址信息;

    步骤506、创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述设备的同一udp端口;

    步骤508、选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输数据。

    对于上述步骤502至步骤508,由于其实现方式与图2对应的步骤502和步骤508相似,故,此处不再展开说明。

    可选的,所述数据包为服务器响应所述客户端的请求发送的,所述请求用于请求获取数据;或者,

    所述数据包为所述客户端基于所述设备的地址信息发送的,所述设备的地址信息为所述客户端从所述服务器请求获取的。

    可选的,在获取设备的第一套接字监听到的数据包之前,方法还包括:

    所述设备启动时创建第三套接字,所述第三套接字和所述第二套接字绑定于所述设备的同一udp端口;

    生成所述服务器的地址信息与所述第三套接字之间的映射关系;

    选择与所述服务器的地址信息存在映射关系的所述第三套接字向所述服务器发送注册报文。

    可选的,若解析出的请求数据的客户端为多个,则所述创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系包括:

    创建与所述请求数据的客户端数量相同的第二套接字;

    为各客户端的地址信息分别配置一第二套接字,生成各客户端的地址信息与各第二套接字之间的映射关系,各客户端的地址信息映射的第二套接字唯一且不同。

    可选的,在所述分别生成各客户端的地址信息与第二套接字之间的映射关系之后,还包括:

    将各客户端的地址信息与各第二套接字之间的映射关系添加至映射关系表中;

    其中,所述选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输数据,包括:

    基于目标客户端的地址信息,从所述映射关系表中查找出所述目标客户端的地址信息对应的目标第二套接字;

    选择所述目标客户端的地址信息对应的目标第二套接字向所述目标客户端传输数据。

    可选的,方法还包括:

    若检测到传输异常或传输完成,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除;

    当再次监听到向所述目标客户端传输数据的命令时,重新生成所述目标客户端的地址信息对应的映射关系。

    可选的,方法还包括:

    若检测到传输异常或传输完成,则维持所述目标客户端的地址信息对应的映射关系;

    当再次监听到向所述目标客户端传输数据的命令时,基于维持的所述目标客户端的地址信息对应的映射关系,选择所述目标第二套接字向所述客户端传输数据。

    可选的,方法还包括:

    若所述目标客户端的地址信息对应的映射关系的空闲时长超出预设时长阈值,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除。

    由此可知,本实施例在已有udp套接字监听到客户端的数据包时,依据客户端的地址信息创建新的udp套接字并绑定于该已有udp套接字绑定的udp端口,再选择新的udp套接字进行数据传输,而无需考虑数据包是由哪个udp套接字接收的,从而消除不同操作系统的平台中udp套接字对udp端口的独占规则的差异,实现设备udp端口的跨平台复用。

    图6为本说明书一实施例提供的用户数据报协议udp端口的跨平台应用装置的结构示意图,参见图6,所述装置具体可以包括:获取模块601、第一处理模块602、第二处理模块603以及数据传输模块604,其中:

    获取模块601,用于获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    第一处理模块602,用于解析所述取流数据包,得到请求取流的客户端的地址信息;

    第二处理模块603,用于创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    数据传输模块604,用于选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    可选的,所述取流数据包为服务器响应所述客户端的取流请求发送的,所述取流请求用于请求获取所述监控设备采集的监控数据;或者,

    所述取流数据包为所述客户端基于所述监控设备的地址信息发送的,所述监控设备的地址信息为所述客户端从所述服务器请求获取的。

    可选的,装置还包括:

    第三处理模块,用于所述监控设备启动时创建第三套接字,所述第三套接字和所述第二套接字绑定于所述监控设备的同一udp端口;生成所述服务器的地址信息与所述第三套接字之间的映射关系;

    其中,数据传输模块604,还用于选择与所述服务器的地址信息存在映射关系的所述第三套接字向所述服务器发送注册报文。

    可选的,若解析出的请求取流的客户端为多个,则所述第二处理模块603,具体用于:

    创建与所述请求取流的客户端数量相同的第二套接字;为各客户端的地址信息分别配置一第二套接字,生成各客户端的地址信息与各第二套接字之间的映射关系,各客户端的地址信息映射的第二套接字唯一且不同。

    可选的,所述第二处理模块603,还用于将各客户端的地址信息与各第二套接字之间的映射关系添加至映射关系表中;

    其中,所述数据传输模块604,具体用于:基于目标客户端的地址信息,从所述映射关系表中查找出所述目标客户端的地址信息对应的目标第二套接字;选择所述目标客户端的地址信息对应的目标第二套接字向所述目标客户端传输监控数据。

    可选的,装置还包括:

    第一表维护模块,用于若检测到传输异常或传输完成,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除;当再次监听到向所述目标客户端传输监控数据的命令时,重新生成所述目标客户端的地址信息对应的映射关系。

    可选的,装置还包括:

    第二表维护模块,用于若检测到传输异常或传输完成,则维持所述目标客户端的地址信息对应的映射关系;当再次监听到向所述目标客户端传输监控数据的命令时,基于维持的所述目标客户端的地址信息对应的映射关系,选择所述目标第二套接字向所述客户端传输监控数据。

    可选的,第二表维护模块,还用于若所述目标客户端的地址信息对应的映射关系的空闲时长超出预设时长阈值,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除。

    由此可知,本实施例在已有udp套接字监听到客户端的取流数据包时,依据客户端的地址信息创建新的udp套接字并绑定于该已有udp套接字绑定的udp端口,再选择新的udp套接字进行数据传输,而无需考虑取流数据包是由哪个udp套接字接收的,从而消除不同操作系统的平台中udp套接字对udp端口的独占规则的差异,实现设备udp端口的跨平台复用。

    图7为本说明书另一实施例提供的用户数据报协议udp端口的跨平台应用装置的结构示意图,参见图7,所述装置具体可以包括:获取模块701、第一处理模块702、第二处理模块703以及数据传输模块704,其中:

    获取模块701,用于获取设备的第一套接字监听到的数据包,所述第一套接字为已有的绑定于所述设备的udp端口的套接字;

    第一处理模块702,用于解析所述数据包,得到请求数据的客户端的地址信息;

    第二处理模块703,用于创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述设备的同一udp端口;

    数据传输模块704,用于选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输数据。

    可选的,所述数据包为服务器响应所述客户端的请求发送的,所述请求用于请求获取数据;或者,

    所述数据包为所述客户端基于所述设备的地址信息发送的,所述设备的地址信息为所述客户端从所述服务器请求获取的。

    可选的,装置还包括:

    第三处理模块,用于所述设备启动时创建第三套接字,所述第三套接字和所述第二套接字绑定于所述设备的同一udp端口;生成所述服务器的地址信息与所述第三套接字之间的映射关系;

    其中,所述数据传输模块704,还用于选择与所述服务器的地址信息存在映射关系的所述第三套接字向所述服务器发送注册报文。

    可选的,若解析出的请求数据的客户端为多个,则所述第二处理模块703,具体用于创建与所述请求数据的客户端数量相同的第二套接字;为各客户端的地址信息分别配置一第二套接字,生成各客户端的地址信息与各第二套接字之间的映射关系,各客户端的地址信息映射的第二套接字唯一且不同。

    可选的,所述第二处理模块703,还用于将各客户端的地址信息与各第二套接字之间的映射关系添加至映射关系表中;

    其中,所述数据传输模块704,还用于基于目标客户端的地址信息,从所述映射关系表中查找出所述目标客户端的地址信息对应的目标第二套接字;选择所述目标客户端的地址信息对应的目标第二套接字向所述目标客户端传输数据。

    可选的,装置还包括:

    第一表维护模块,用于若检测到传输异常或传输完成,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除;当再次监听到向所述目标客户端传输数据的命令时,重新生成所述目标客户端的地址信息对应的映射关系。

    可选的,装置还包括:

    第二表维护模块,用于若检测到传输异常或传输完成,则维持所述目标客户端的地址信息对应的映射关系;当再次监听到向所述目标客户端传输数据的命令时,基于维持的所述目标客户端的地址信息对应的映射关系,选择所述目标第二套接字向所述客户端传输数据。

    可选的,第二表维护模块,还用于若所述目标客户端的地址信息对应的映射关系的空闲时长超出预设时长阈值,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除。

    由此可知,本实施例在已有udp套接字监听到客户端的数据包时,依据客户端的地址信息创建新的udp套接字并绑定于该已有udp套接字绑定的udp端口,再选择新的udp套接字进行数据传输,而无需考虑数据包是由哪个udp套接字接收的,从而消除不同操作系统的平台中udp套接字对udp端口的独占规则的差异,实现设备udp端口的跨平台复用。

    另外,对于上述装置实施方式而言,由于其与方法实施方式基本相似,所以描述的比较简单,相关之处参见方法实施方式的部分说明即可。而且,应当注意的是,在本说明书的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本说明书不受限于此,可以根据需要对各个部件进行重新划分或者组合。

    图8为本说明书一实施例提供的一种电子设备的结构示意图,参见图8,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成用户数据报协议udp端口的跨平台复用装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

    网络接口、处理器和存储器可以通过总线系统相互连接。总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

    存储器用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器可能包含高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器。

    处理器,用于执行所述存储器存放的程序,并具体执行:

    获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    解析所述取流数据包,得到请求取流的客户端的地址信息;

    创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    或者,

    获取设备的第一套接字监听到的数据包,所述第一套接字为已有的绑定于所述设备的udp端口的套接字;

    解析所述数据包,得到请求数据的客户端的地址信息;

    创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述设备的同一udp端口;

    选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输数据。

    上述如本说明书图6或7所示实施例揭示的用户数据报协议udp端口的跨平台应用装置或管理者(master)节点执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

    用户数据报协议udp端口的跨平台复用装置还可执行图2-5示出的方法,并实现管理者节点执行的方法。

    基于相同的发明创造,本说明书实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行图2-5对应的实施例提供的用户数据报协议udp端口的跨平台复用方法。

    本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

    上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

    本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

    本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

    这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

    这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

    在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

    内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

    计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

    还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

    本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

    以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。


    技术特征:

    1.一种用户数据报协议udp端口的复用方法,其特征在于,应用于支持udp协议的监控设备,包括:

    获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    解析所述取流数据包,得到请求取流的客户端的地址信息;

    创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    2.根据权利要求1所述的方法,其特征在于,

    所述取流数据包为服务器响应所述客户端的取流请求发送的,所述取流请求用于请求获取所述监控设备采集的监控数据;或者,

    所述取流数据包为所述客户端基于所述监控设备的地址信息发送的,所述监控设备的地址信息为所述客户端从所述服务器请求获取的。

    3.根据权利要求2所述的方法,其特征在于,在获取监控设备的第一套接字监听到的取流数据包之前,方法还包括:

    所述监控设备启动时创建第三套接字,所述第三套接字和所述第二套接字绑定于所述监控设备的同一udp端口;

    生成所述服务器的地址信息与所述第三套接字之间的映射关系;

    选择与所述服务器的地址信息存在映射关系的所述第三套接字向所述服务器发送注册报文。

    4.根据权利要求1所述的方法,其特征在于,若解析出的请求取流的客户端为多个,则所述创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系包括:

    创建与所述请求取流的客户端数量相同的第二套接字;

    为各客户端的地址信息分别配置一第二套接字,生成各客户端的地址信息与各第二套接字之间的映射关系,各客户端的地址信息映射的第二套接字唯一且不同。

    5.根据权利要求4所述的方法,其特征在于,在所述分别生成各客户端的地址信息与第二套接字之间的映射关系之后,还包括:

    将各客户端的地址信息与各第二套接字之间的映射关系添加至映射关系表中;

    其中,所述选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据,包括:

    基于目标客户端的地址信息,从所述映射关系表中查找出所述目标客户端的地址信息对应的目标第二套接字;

    选择所述目标客户端的地址信息对应的目标第二套接字向所述目标客户端传输监控数据。

    6.根据权利要求5所述的方法,其特征在于,还包括:

    若检测到传输异常或传输完成,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除;

    当再次监听到向所述目标客户端传输监控数据的命令时,重新生成所述目标客户端的地址信息对应的映射关系。

    7.根据权利要求5所述的方法,其特征在于,还包括:

    若检测到传输异常或传输完成,则维持所述目标客户端的地址信息对应的映射关系;

    当再次监听到向所述目标客户端传输监控数据的命令时,基于维持的所述目标客户端的地址信息对应的映射关系,选择所述目标第二套接字向所述客户端传输监控数据。

    8.根据权利要求7所述的方法,其特征在于,还包括:

    若所述目标客户端的地址信息对应的映射关系的空闲时长超出预设时长阈值,则将所述目标客户端的地址信息对应的映射关系从所述映射关系表中删除。

    9.一种用户数据报协议udp端口的跨平台复用装置,其特征在于,包括:

    获取模块,用于获取监控设备的第一套接字监听到的取流数据包,所述第一套接字为已有的绑定于所述监控设备的udp端口的套接字;

    第一处理模块,用于解析所述取流数据包,得到请求取流的客户端的地址信息;

    第二处理模块,用于创建第二套接字并生成所述客户端的地址信息与所述第二套接字之间的映射关系,所述第二套接字和所述第一套接字绑定于所述监控设备的同一udp端口;

    数据传输模块,用于选择与所述客户端的地址信息存在映射关系的第二套接字向所述客户端传输监控数据。

    10.一种电子设备,其特征在于,包括:

    处理器;以及

    被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求1至8中任一项所述的方法的步骤。

    技术总结
    本说明书实施例提供一种用户数据报协议UDP端口的复用方法、装置及设备。方法包括:获取监控设备的第一套接字监听到的取流数据包;解析取流数据包,得到请求取流的客户端的地址信息;创建第二套接字并生成客户端的地址信息与第二套接字之间的映射关系,第二套接字和第一套接字绑定于监控设备的同一UDP端口;选择与客户端的地址信息存在映射关系的第二套接字向客户端传输监控数据。由此,可依据数据对应的源端进行传输,而无需考虑该数据是由哪个UDP套接字接收的,从而可消除UDP套接字跨平台的差异,实现设备UDP端口的跨平台复用。

    技术研发人员:张磊
    受保护的技术使用者:杭州萤石软件有限公司
    技术研发日:2020.11.05
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7309.html

    最新回复(0)