设备的发现方法和装置与流程

文档序号:12377298阅读:279来源:国知局
设备的发现方法和装置与流程

本发明涉及通信领域,尤其涉及一种设备的发现方法和装置。



背景技术:

现有技术中设备发现功能一般依赖于第三方软件DLNA(Digital Living Network Alliance,数字生活网络联盟)的UPnP(Universal Plug and Play,通用即插即用协议)。DLNA是一个由消费性电子、移动电话以及电脑厂商组成的联盟组织。使用DLNA有很多的限制,比如DLNA规定了所使用的网络协议,必须支持IPv4,规定了所有DLNA设备都必须支持使用HTTP协议进行媒体的传输等,因此使用DLNA有很多的局限。

由于现有技术中设备发现功能一般依赖于第三方软件DLNA,当被依赖的软件DLNA不存在或者发生变化时,发现设备功能就无法实现,所以依赖于DLNA发现设备就不可避免地产生软件耦合。软件耦合是指两个或两个以上的软件相互依赖于对方的一个量度。此外,由于第三方软件带来的一些副作用也难以避免,比如DLNA是通过有线网络或者无线网络连接的,对网络会有延迟;并且DLNA发现设备的流程复杂,这都会导致发现设备的速度不快。



技术实现要素:

本发明的主要目的在于提出一种设备的发现方法和装置,旨在实现跳过DLNA复杂的流程发现设备,加快发现设备的速度。

为实现上述目的,本发明提供一种设备的发现方法,所述方法包括如下步骤:

当前终端监听网络中的数据包;

判断所述数据包是否是自定义数据包;

若是,则当前终端解析所述自定义数据包,获得所述待连接终端的信息;

根据所述待连接终端的信息,更新当前终端的可连接设备列表。

可选地,所述当前终端解析所述自定义数据包,获得待连接终端的信息的步骤之后包括:

启动心跳线程,获得网络中的心跳包;

所述根据所述待连接终端的信息,更新当前终端的可连接设备列表的步骤包括:

根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息;

根据待连接设备的在线信息更新所述可连接设备列表。

可选地,所述根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息的步骤包括:

获取网络中的心跳包;

解析所述心跳包,获得发送所述心跳包的设备标识;

根据获得的设备标识和待连接终端的信息确定待连接设备的在线信息。

可选地,所述方法还包括:

与可连接设备列表中的设备建立用户数据协议连接。

可选地,所述自定义数据包包括设备IP地址和ID。

此外,为实现上述目的,本发明还提供一种设备的发现装置,其特征在于,所述装置包括:

监听模块,用于当前终端监听网络中的数据包;

判断模块,用于判断所述数据包是否是自定义数据包;

解析模块,用于若是,则当前终端解析所述自定义数据包,获得待连接终端的信息;

更新模块,用于根据所述待连接终端的信息,更新当前终端的可连接设备列表。

可选地,所述装置还包括:

获得模块,用于启动心跳线程,获得网络中的心跳包;

所述更新模块包括:

确定单元,用于根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息;

更新单元,用于根据待连接设备的在线信息更新所述可连接设备列表。

可选地,所述确定单元包括:

获取子单元,获取网络中的心跳包;

解析子单元,用于解析所述心跳包,获得发送所述心跳包的设备标识;

确定子单元,用于根据获得的设备标识和待连接终端的信息确定待连接设备的在线信息。

可选地,所述装置还包括:

连接模块,用于与可连接设备列表中的设备建立用户数据协议连接。

可选地,所述自定义数据包包括设备IP地址和ID。

本发明通过当前终端监听网络中的数据包;判断所述数据包是否是自定义数据包;若是,则当前终端解析所述自定义数据包,获得待连接终端的信息;根据所述待连接终端的信息,更新当前终端的可连接设备列表。通过上述方式,本发明通过当前终端监听网络中的数据包,判断监听到的是否是待连接设备发送的自定义数据包,然后根据监听到的自定义数据包实现对待连接终端的发现,不需要依赖于第三方软件DLNA,因此不会产生使用第三方软件带来的软件耦合的问题,跳过了DLNA发现设备的复杂流程,发现流程也相对简单,并且能够加快设备发现的速度。

附图说明

图1为本发明设备的发现方法第一实施例的流程示意图;

图2为本发明设备的发现方法第二实施例的流程示意图;

图3为本发明实施例中根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息的细化流程示意图;

图4为本发明设备的发现方法第三实施例的流程示意图;

图5为本发明设备的发现装置第一实施例的功能模块示意图;

图6为本发明设备的发现装置第二实施例的功能模块示意图;

图7为本发明实施例中确定单元的细化功能示意图;

图8为本发明设备的发现装置第三实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种设备的发现方法。

参照图1,图1为本发明设备的发现方法第一实施例的流程示意图。

本发明设备发现的方法包括如下步骤:

步骤S100,当前终端监听网络中的数据包。

为保证本发明能够正常实施,本发明中各个设备需要在同一网络中,因此可以事先建立局域网,当然也可以采用广域网,即各个设备可以通过广域网进行通信。具体地,各个设备可以通过TCP/IP基础协议进行通信,具体实施中也可以通过其他的协议进行通信,比如采用NetBEUI协议。

在使用过程中,用户可以将当前终端上电开机,然后接入事先建立好的网络,网络中预先设置为可以相互发现的设备可以向网络中发送自定义数据包,当然网络中的各个设备也可以相互发送自定义数据包;在将当前终端上电开机,并接入事先建立好的网络后,用户可以通过当前终端或当前终端自动向网络中发送自定义数据包。所述自定义数据包携带了当前终端的描述信息。描述信息至少包括该设备IP地址和设备唯一ID,具体实施中除了包括设备IP地址和ID之外,还可以包括端口号、软件版本、硬件版本和设备类型中的至少一种。本实施例中描述信息中包括该设备IP地址、设备唯一ID、端口号、软件版本、硬件版本和设备类型,其自定义数据包详细数据结构如下:

{

unsigned char[128]ipaddr,

unsigned int port,

unsigned int device_type,

unsigned char[128]device_id,

unsigned char[128]software_version,

unsigned char[128]hardware_version,

}

在将当前终端上电开机,并接入事先建立好的网络后,当前终端同时监听来自网络中的数据包。当前终端可以是可以相互发现的设备中的任何一个。

在本实施例中,所述终端包括手机、PAD、电视、电脑等可以向计算机输入程序和数据或接收计算机输出处理结果的设备。

步骤S200,判断所述数据包是否是自定义数据包。

在监听到数据包时,可以对监听到的数据包进行判断,判断监听到的数据包是否是自定义数据包。

具体地,通过自定义数据包的名称或者标识位判断监听到的数据包是否是自定义数据包;若监听到的数据包里含有名称和标识位中的至少一种,则该数据包为自定义数据包。

步骤S300,若是,则当前终端解析所述自定义数据包,获得待连接终端的信息。

在当前终端获取到其他设备发送的自定义数据包后,当前终端解析获取到的自定义数据包,从而获得其他终端信息。具体地,本实施例中对获得的自定义数据包进行解析,获得待连接终端的设备IP地址和设备唯一ID。

具体实施中根据自定义数据包包括的内容不同,获得其他终端信息也会不同,比如如果自定义数据包包括该设备IP地址、设备唯一ID、端口号、软件版本、硬件版本和设备类型,则解析获得其他设备的IP地址、设备唯一ID、端口号、软件版本、硬件版本和设备类型。

步骤S400,根据所述待连接终端的信息,更新当前终端的可连接设备列表。

本实施例中还事先建立有一个设备列表,此列表的作用为记录可连接的设备,包括可连接的设备的标识信息,比如设备ID等。具体实施中还可以包括设备IP地址等。

具体地,本实施例中设备列表可以为一个可实时更新的列表,具体实施中设备列表还可以为一个定时更新的列表。本实施例在网络中发现设备时,将该设备的信息反馈到列表中,在列表中记录设备的信息,记录完之后,对可连接设备列表进行更新。

本实施例中通过当前终端监听网络中的数据包;判断所述数据包是否是自定义数据包;若是,则当前终端解析所述自定义数据包,获得待连接终端的信息;根据所述待连接终端的信息,更新当前终端的可连接设备列表。通过上述方式,本实施例通过当前终端监听网络中的数据包,判断监听到的是否是待连接设备发送的自定义数据包,然后根据监听到的自定义数据包实现对待连接终端的发现,不需要依赖于第三方软件DLNA,因此不会产生使用第三方软件带来的软件耦合的问题,跳过了DLNA发现设备的复杂流程,发现流程也相对简单,并且能够加快设备发现的速度。

进一步地,参照图2,图2为本发明设备的发现方法第二实施例的流程示意图。

基于本发明设备的发现方法第一实施例,步骤S300之后的步骤可以包括:

S500,启动心跳线程,获得网络中的心跳包。

基于本发明设备发现的方法第一实施例,步骤S400可以包括:

S410,根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息;

S420,根据待连接设备的在线信息更新所述可连接设备列表。

为了确定发现的可连接设备是否实时在线,本实施例中所有终端可以实时监听来自网络中的心跳包。本实施例中心跳包为UDP(User Data Protocol,用户数据协议)包,UDP是与TCP相对应的协议,它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。每个UDP数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输。当然心跳包还可以为其他协议的数据包。

网络中各个设备都会向网络中发送心跳包,同时各个设备都可以在网络中监听心跳包,通过监听心跳包获取其他设备的在线情况。心跳包是在设备之间或者设备向网络定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳。用来判断对方(设备,进程或其它网元)是否正常运行而定时发送简单的通讯包。

心跳包的内容没有特别规定,一般都是很小的包,或者是只包含包头的一个空包。因此用心跳包来获取设备在线信息,不会加重服务器的负担。因此本实施例中通过启动心跳线程,根据待连接终端信息获得对应的心跳包;通过心跳包确定待连接设备的在线信息;根据待连接设备的在线信息更新所述可连接设备列表。

在本实施例中,通过启动心跳线程,获得网络中的心跳包;根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息;根据待连接设备的在线信息更新所述可连接设备列表。通过上述方式,用心跳包来获取设备在线信息,不会加重服务器的负担。能够可以快速地获取其他终端信息,提高了可连接设备列表的准确性。

进一步地,参照图3,图3为本发明实施例中根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息的步骤包括的细化流程示意图。

基于本发明设备的发现方法第一实施例,步骤S410可以包括:

S411,获取网络中的心跳包;

S412,解析所述心跳包,获得发送所述心跳包的设备标识;

S413,根据获得的设备标识和待连接终端的信息确定待连接设备的在线信息。

具体地,本实施例中当前终端自动获取来自网络中的心跳包,解析所述心跳包,通过UDP心跳包中所包含的完整的源、目的地址及分组编号判断是否是所述列表中可连接设备的心跳包。若是,则获取设备在线信息,对更新可连接设备列表中的设备进行更新,将不在线的设备移出可连接设备列表;若否,则忽略所述心跳包。

在本实施例中,通过获取网络中的心跳包;解析所述心跳包,获得发送所述心跳包的设备标识;根据获得的设备标识和待连接终端的信息确定待连接设备的在线信息。通过上述方式,用心跳包来获取设备在线信息,不会加重服务器的负担。能够实时确定设备的在线情况,使得可连接设备列表更加准确。

进一步地,参照图4,图4为本发明设备发现的方法第三实施例的流程示意图;

基于本发明设备的发现方法第一实施例,所述方法还包括:

S600,与可连接设备列表中的设备建立用户数据协议连接。

本实施例中在启动心跳线程,根据检测到各个设备的在线情况,更新可连接列表后,可连接设备列表中存在的设备即为在线的设备,此时,本实施例中建立与可连接设备列表中各个设备的连接。

具体地,与可连接设备列表中的设备建立UDP连接。UDP是定义用来在互连网络环境中提供包交换的计算机通信的协议。此协议默认认为网路协议(IP)是其下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制。UDP连接只是逻辑上的连接,并不建立物理连接,具有资源消耗小,处理速度快的优点。具体实施中还可以建立其他连接。

进一步地,本实施例中与可连接设备列表中的设备建立UDP连接的过程可以包括向可连接设备列表中的设备直接发送UDP数据包,确认第一终端与可连接设备列表中的设备之间的通信是否正常,若可连接设备列表中的设备有回应,那么说明对方网络是正常的。

需要特别说明的是,在与可连接设备列表中的设备建立UDP连接后,第一终端可以重新监听网络中的自定义数据包。

在本实施例中在更新可连接设备列表后,与可连接设备列表中的设备建立UDP连接。通过上述方式,本实施例中与其他设备建立UDP连接,资源消耗小,处理速度快,并且可以根据UDP连接发送的信息快速确认第一终端与可连接设备列表中的设备之间的通信是否正常,进一步确认了可连接设备列表中的设备是否可以连接。

本发明还提供一种设备的发现装置。

参照图5,图5为本发明设备的发现装置第一实施例的功能模块示意图。

在本实施例中,该设备的发现装置包括:

监听模块100,用于当前终端监听网络中的数据包。

为保证本发明能够正常实施,本发明中各个设备需要在同一网络中,因此可以事先建立局域网,当然也可以采用广域网,即各个设备可以通过广域网进行通信。具体地,各个设备可以通过TCP/IP基础协议进行通信,具体实施中也可以通过其他的协议进行通信,比如采用NetBEUI协议。

在使用过程中,用户可以将当前终端上电开机,然后接入事先建立好的网络,网络中预先设置为可以相互发现的设备可以向网络中发送自定义数据包,当然网络中的各个设备也可以相互发送自定义数据包;在将当前终端上电开机,并接入事先建立好的网络后,用户可以通过当前终端或当前终端自动向网络中发送自定义数据包。所述自定义数据包携带了当前终端的描述信息。描述信息至少包括该设备IP地址和设备唯一ID,具体实施中除了包括设备IP地址和ID之外,还可以包括端口号、软件版本、硬件版本和设备类型中的至少一种。本实施例中描述信息中包括该设备IP地址、设备唯一ID、端口号、软件版本、硬件版本和设备类型,其自定义数据包详细数据结构如下:

{

unsigned char[128]ipaddr,

unsigned int port,

unsigned int device_type,

unsigned char[128]device_id,

unsigned char[128]software_version,

unsigned char[128]hardware_version,

}

当然,在将当前终端上电开机,并接入事先建立好的网络后,当前终端同时监听来自网络中的数据包。当前终端可以是可以相互发现的设备中的任何一个。

在本实施例中,所述终端包括手机、PAD、电视、电脑等可以向计算机输入程序和数据或接收计算机输出处理结果的设备。

判断模块200,用于判断所述数据包是否是自定义数据包。

在监听到数据包时,可以对监听到的数据包进行判断,判断监听到的数据包是否是自定义数据包。

具体地,通过自定义数据包的名称或者标识位判断监听到的数据包是否是自定义数据包;若监听到的数据包里含有名称和标识位中的至少一种,则该数据包为自定义数据包。

解析模块300,用于当前终端解析所述自定义数据包,获得待连接终端的信息。

在当前终端获取到其他设备发送的自定义数据包后,当前终端解析获取到的自定义数据包,从而获得其他终端信息。具体地,本实施例中对获得的自定义数据包进行解析,获得待连接终端的设备IP地址和设备唯一ID。

具体实施中根据自定义数据包包括的内容不同,获得其他终端信息也会不同,比如如果自定义数据包包括该设备IP地址、设备唯一ID、端口号、软件版本、硬件版本和设备类型,则解析获得其他设备的IP地址、设备唯一ID、端口号、软件版本、硬件版本和设备类型。

更新模块400,用于根据所述待连接终端的信息,更新当前终端的可连接设备列表。

本实施例中还事先建立有一个设备列表,此列表的作用为记录可连接的设备,包括可连接的设备的标识信息,比如设备ID等。具体实施中还可以包括设备IP地址等。

具体地,本实施例中设备列表可以为一个可实时更新的列表,具体实施中设备列表还可以为一个定时更新的列表。本实施例在网络中发现设备时,将该设备的信息反馈到列表中,在列表中记录设备的信息,记录完之后,对可连接设备列表进行更新。

在本实施例中,通过监听模块100监听网络中的数据包;判断模块200判断所述数据包是否是自定义数据包;若是,则解析模块300解析所述自定义数据包,获得待连接终端的信息;更新模块400根据所述待连接终端的信息,更新当前终端的可连接设备列表。通过上述方式,本实施例通过当前终端监听网络中的数据包,判断监听到的是否是待连接设备发送的自定义数据包,然后根据监听到的自定义数据包实现对待连接终端的发现,不需要依赖于第三方软件DLNA,因此不会产生使用第三方软件带来的软件耦合的问题,跳过了DLNA发现设备的复杂流程,发现流程也相对简单,并且能够加快设备发现的速度。

进一步地,参照图6,图6为本发明设备的发现装置第二实施例的功能模块示意图。

基于本发明设备的发现装置第一实施例,所述装置还包括:

获得模块500,启动心跳线程,获得网络中的心跳包;

更新模块400可以包括:

确定单元410,用于根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息;

更新单元420,根据待连接设备的在线信息更新所述可连接设备列表。

为了确定发现的可连接设备是否实时在线,本实施例中所有终端可以实时监听来自网络中的心跳包。本实施例中心跳包为UDP(User Data Protocol,用户数据协议)包,UDP是与TCP相对应的协议,它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。每个UDP数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输。当然心跳包还可以为其他协议的数据包。

网络中各个设备都会向网络中发送心跳包,同时各个设备都可以在网络中监听心跳包,通过监听心跳包获取其他设备的在线情况。心跳包是在设备之间或者设备向网络定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳。用来判断对方(设备,进程或其它网元)是否正常运行而定时发送简单的通讯包。

心跳包的内容没有特别规定,一般都是很小的包,或者是只包含包头的一个空包。因此用心跳包来获取设备在线信息,不会加重服务器的负担。因此本实施例中通过启动心跳线程,根据待连接终端信息获得对应的心跳包;通过心跳包确定待连接设备的在线信息;根据待连接设备的在线信息更新所述可连接设备列表。

在本实施例中,通过启动心跳线程,获得网络中的心跳包;根据获得的心跳包和待连接终端的信息确定待连接设备的在线信息;根据待连接设备的在线信息更新所述可连接设备列表。通过上述方式,用心跳包来获取设备在线信息,不会加重服务器的负担。能够可以快速地获取其他终端信息,提高了可连接设备列表的准确性。

进一步地,参照图7,图7为本发明实施例中确定单元的细化功能示意图。

基于本发明设备的发现装置第一实施例,确定单元410可以包括:

获取子单元411,用于获取网络中的心跳包;

获得子单元412,用于解析所述心跳包,获得发送所述心跳包的设备标识;

确定子单元413,用于根据获得的设备标识和待连接终端的信息确定待连接设备的在线信息。

具体地,本实施例中当前终端自动获取来自网络中的心跳包,解析所述心跳包,通过UDP心跳包中所包含的完整的源、目的地址及分组编号判断是否是所述列表中可连接设备的心跳包。若是,则获取设备在线信息,对更新可连接设备列表中的设备进行更新,将不在线的设备移出可连接设备列表;若否,则忽略所述心跳包。

在本实施例中,通过获取网络中的心跳包;解析所述心跳包,获得发送所述心跳包的设备标识;根据获得的设备标识和待连接终端的信息确定待连接设备的在线信息。通过上述方式,用心跳包来获取设备在线信息,不会加重服务器的负担。能够实时确定设备的在线情况,使得可连接设备列表更加准确。

进一步地,参照图8,图8为本发明设备的发现装置第三实施例的流程示意图。

基于本发明设备的发现装置第一实施例,所述装置还包括:

连接模块600,用于与可连接设备列表中的设备建立用户数据协议连接。

本实施例中在启动心跳线程,根据检测到各个设备的在线情况,更新可连接列表后,可连接设备列表中存在的设备即为在线的设备,此时,本实施例中建立与可连接设备列表中各个设备的连接。

具体地,与可连接设备列表中的设备建立UDP连接。UDP是定义用来在互连网络环境中提供包交换的计算机通信的协议。此协议默认认为网路协议(IP)是其下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制。UDP连接只是逻辑上的连接,并不建立物理连接,具有资源消耗小,处理速度快的优点。具体实施中还可以建立其他连接。

进一步地,本实施例中与可连接设备列表中的设备建立UDP连接的过程可以包括向可连接设备列表中的设备直接发送UDP数据包,确认第一终端与可连接设备列表中的设备之间的通信是否正常,若可连接设备列表中的设备有回应,那么说明对方网络是正常的。

需要特别说明的是,在与可连接设备列表中的设备建立UDP连接后,第一终端可以重新监听网络中的自定义数据包。

在本实施例中在更新可连接设备列表后,与可连接设备列表中的设备建立UDP连接。通过上述方式,本实施例中与其他设备建立UDP连接,资源消耗小,处理速度快,并且可以根据UDP连接发送的信息快速确认第一终端与可连接设备列表中的设备之间的通信是否正常,进一步确认了可连接设备列表中的设备是否可以连接。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1