发明内容
有鉴于此,本申请所要解决的技术问题是提供了一种基于安卓系统的局域网设备发现方法及动态链接库,通过移植bonjour动态库,实现高效且稳定的局域网内设备发现。
为了解决上述技术问题,本申请有如下技术方案:
一种基于安卓系统的局域网设备发现方法,其特征在于,包括:
建立动态链接库,所述动态链接库包括客户端与服务端;
所述客户端针对应用程序的路径创建通信文件;
所述客户端通过动态接口接收应用程序的设备发现指令,并通过所述通信文件将该设备发现指令转发至服务端;
所述服务端根据所述设备发现指令执行相应的设备发现操作,并产生操作报文;通过所述通信文件,将所述操作报文发送至客户端;
所述客户端将所述操作报文转发至应用程序。
优选地,其中,所述建立动态链接库具体为:
通过Ndk开发编译器,交叉编译bonjour动态库的源码,建立动态链接库。
优选地,其中,所述客户端通过动态接口接收应用程序的设备发现指令具体为:
所述客户端响应于应用程序的JAVA本地调用,而向应用程序提供动态接口,通过动态接口接收应用程序的设备发现指令。
优选地,其中,所述客户端通过动态接口接收应用程序的设备发现指令还包括:
客户端向应用程序提供JAVA虚拟机实例。
优选地,其中,当所述设备发现指令具体为注册操作指令;则所述服务端根据所述设备发现指令执行相应的设备发现操作,并产生操作报文具体为:
所述服务端调用注册端口,执行局域网内注册服务,并将注册结果制作为操作报文。
优选地,其中,当所述设备发现指令具体为查询操作指令;则所述服务端根据所述设备发现指令执行相应的设备发现操作,并产生操作报文具体为
所述服务端调用查询端口,执行局域网查询服务,并将查询结果制作为操作报文。
优选地,其中,还包括:
当应用程序终止JAVA本地调用,则停止运行所述服务端。
为了解决上述技术问题,本申请还有如下技术方案:
一种动态链接库,其特征在于,包括:
客户端,用于针对应用程序的路径创建通信文件,通过动态接口接收应用程序的设备发现指令,并通过所述通信文件将该设备发现指令转发至服务端;接收服务端发送的操作报文并将所述操作报文转发至应用程序;
服务端,用于接收所述设备发现指令,根据所述设备发现指令执行相应的设备发现操作,并产生操作报文;通过所述通信文件,将所述操作报文发送至客户端。
优选地,其中,所述动态链接库通过Ndk开发编译器,交叉编译bonjour动态库的源码而建立。
优选地,其中,所述客户端包括:
通信文件模块,用于针对应用程序的路径创建通信文件;
动态接口模块,用于响应于应用程序的JAVA本地调用,而接收应用程序的设备发现指令;
虚拟机模块,用于向应用程序提供JAVA虚拟机实例;
第一发送模块,用于通过所述通信文件将该设备发现指令转发至服务端;并将所述操作报文转发至应用程序;
第一接收模块,用于接收服务端发送的操作报文。
优选地,其中,所述服务端包括:
第一接收模块,用于接收所述设备发现指令;
注册服务模块,用于在所述设备发现指令具体为注册操作指令时,执行局域网内注册服务,并将注册结果制作为操作报文;
查询服务模块,用于在所述设备发现指令具体为查询操作指令时,执行局域网查询服务,并将查询结果制作为操作报文;
第一发送模块,用于通过所述通信文件,将所述操作报文发送至客户端。
与现有技术相比,本申请所述的方法和动态链接库,达到了如下效果:
(1)基于bonjour动态库建立动态链接库,由此针对应用程序创建通信文件,进而实现响应于应用程序的指令而执行局域网内的设备发现。
(2)提高了局域网内设备发现的效率。
(3)提高了局域网内设备发现的网络连接稳定性。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
本申请中,所述基于安卓系统的局域网设备发现方法,不再基于Jmdns库,而采用移植bonjour动态库的方式实现局域网设备发现。参见图1所示,为本申请所述方法的具体实施例。本实施例中,所述方法包括以下步骤:
步骤101、建立动态链接库,所述动态链接库包括客户端与服务端。
本实施例中,所述动态链接库的建立,是通过安卓系统的Ndk开发编译器,交叉编译bonjour动态库的源码,从而建立动态链接库。
步骤102、所述客户端针对应用程序的路径创建通信文件。
本实施例中所述通信文件具体为socket通信文件,该文件用于在特定应用程序进行局域网内设备发现时,实现所述客户端与服务端之间的跨进程通信。所以所述socket通信文件需要与应用程序相关。由于安卓系统权限的限制,所述socket通信文件只能设置在应用程序的私有数据目录中,也就是针对不同应用程序,需动态的创建相应路径的socket通信文件。
本实施例中,之所以能够动态创建相应路径的socket通信文件,是基于了bonjour动态库本身的特点,也就是说正是基于这一点,本实施例的整体方案才得以实现。
步骤103、所述客户端通过动态接口接收应用程序的设备发现指令,并通过所述通信文件将该设备发现指令转发至服务端。
应用程序通过调用客户端的动态接口,即可向客户端发送设备发现指令,从而启动设备发现的流程。
需要说明的是,一般应用程序均构建于JAVA环境下,所以应用程序对于动态接口的调用,将通过JAVA本地调用(Java Native Interface简称Jni)。另外,为保证后续可能出现的C++代码能够在应用程序所处的JAVA环境下运行,此处还可以向应用程序提供JAVA虚拟机实例。
步骤104、所述服务端根据所述设备发现指令执行相应的设备发现操作,并产生操作报文;通过所述通信文件,将所述操作报文发送至客户端。
所述服务端用于提供局域网内设备发现相关的功能,其响应于设备发现指令,即可执行相应的设备发现操作。并将执行操作过程中,需要应用程序获悉的相关内容以操作报文的形式反馈。
步骤105、所述客户端将所述操作报文转发至应用程序。
最终,所述操作报文经由客户端的转发,到达应用程序,使得应用程序获悉相关的内容。
通过以上技术方案可知,本实施例存在的有益效果是:基于bonjour动态库建立动态链接库,由此针对应用程序创建通信文件,进而实现响应于应用程序的指令而执行局域网内的设备发现;使得局域网内设备发现的效率有了明显的提升,并且使得网络连接的稳定性也显著的提高。
参见图2所示,为本申请所述方法的另一个具体实施例,本实施例在前述实施例的基础之上,对整体技术方案进行了更加详细的阐述和扩充,所述方法具体包括以下:
步骤201、建立动态链接库,所述动态链接库包括客户端与服务端。
步骤202、所述客户端针对应用程序的路径创建通信文件。
步骤203、所述客户端通过动态接口接收应用程序的设备发现指令,并通过所述通信文件将该设备发现指令转发至服务端;当所述设备发现指令为注册操作指令,则进入步骤204;当所述设备发现指令为查询操作指令,则进入步骤205。
步骤204、所述服务端调用注册端口,执行局域网内注册服务,并将注册结果制作为操作报文。
步骤205、所述服务端调用查询端口,执行局域网查询服务,并将查询结果制作为操作报文。
本实施例中,所述设备发现指令包括注册操作指令和查询操作指令,根据相应的指令,所述服务端可以提供局域网注册服务和查询服务;并生成相应的操作报文。所述注册服务和查询服务均是所述服务端常规应该提供的服务功能。
步骤206、所述服务端通过所述通信文件,将所述操作报文发送至客户端。
步骤207、当应用程序终止JAVA本地调用,则停止运行所述服务端。
当应用程序终止JAVA本地调用,则说明所述的局域网内设备发现方法可以将要终止,此时所述动态链接库可以释放相应的资源,停止运行所述服务端。
通过以上技术方案可知,本实施例在前述实施例的基础上,进一步实现的有益效果是:本实施例中所述方法对于设备发现指令的形式做出了更为详细的描述,使得整体技术方案更加完整,公开更加充分。
参见图3所示,为本发明所述动态链接库的具体实施例。本实施例中,所述动态链接库即用于实现上述实施例中所述的方法。其技术方案本质上与前述实施例一致,前述实施例中的相应描述同样适用于本实施例当中。动态链接库通过Ndk开发编译器,交叉编译bonjour动态库的源码而建立;所述动态链接库具体包括:
客户端301,用于针对应用程序的路径创建通信文件,通过动态接口接收应用程序的设备发现指令,并通过所述通信文件将该设备发现指令转发至服务端302;接收服务端302发送的操作报文并将所述操作报文转发至应用程序。
所述客户端301包括:
通信文件模块,用于针对应用程序的路径创建通信文件。
动态接口模块,用于响应于应用程序的JAVA本地调用,而接收应用程序的设备发现指令。
虚拟机模块,用于向应用程序提供JAVA虚拟机实例。
第一发送模块,用于通过所述通信文件将该设备发现指令转发至服务端;并将所述操作报文转发至应用程序。
第一接收模块,用于接收服务端发送的操作报文。
服务端302,用于接收所述设备发现指令,根据所述设备发现指令执行相应的设备发现操作,并产生操作报文;通过所述通信文件,将所述操作报文发送至客户端301。
所述服务端302包括:
第一接收模块,用于接收所述设备发现指令。
注册服务模块,用于在所述设备发现指令具体为注册操作指令时,执行局域网内注册服务,并将注册结果制作为操作报文。
查询服务模块,用于在所述设备发现指令具体为查询操作指令时,执行局域网查询服务,并将查询结果制作为操作报文。
第一发送模块,用于通过所述通信文件,将所述操作报文发送至客户端。
通过以上技术方案可知,本实施例存在的有益效果是:基于bonjour动态库建立动态链接库,由此针对应用程序创建通信文件,进而实现响应于应用程序的指令而执行局域网内的设备发现;使得局域网内设备发现的效率有了明显的提升,并且使得网络连接的稳定性也显著的提高。
通过以上各实施例可知,本申请存在的有益效果是:
(1)基于bonjour动态库建立动态链接库,由此针对应用程序创建通信文件,进而实现响应于应用程序的指令而执行局域网内的设备发现。
(2)提高了局域网内设备发现的效率。
(3)提高了局域网内设备发现的网络连接稳定性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。