访问网络方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:31800237 阅读:17 留言:0更新日期:2022-01-08 11:00
本发明专利技术公开了一种Linux兼容Android的访问网络方法、装置、计算机设备和存储介质,Android系统或Android应用调用bionic库的DNS模块发起DNS请求;根据DNS请求信息中的bionic库的DNS请求函数名称以及DNS请求函数的参数,调用Linux的libc库相应的DNS请求函数,对DNS请求函数的参数变换处理后进行DNS请求。实现了Linux兼容Android的Android系统或应用访问网络。网络。网络。

【技术实现步骤摘要】
访问网络方法、装置、计算机设备和存储介质


[0001]本专利技术涉及计算机操作系统领域,尤其涉及一种Linux兼容Android的访问网络方法、装置、计算机设备和存储介质。

技术介绍

[0002]用户在Android兼容环境中运行Android应用时,通常都有进行网络访问的需求,例如:观看在线视频,浏览网页,登录软件等等。由于容器docker的隔离作用,运行于容器的Android系统无法直接使用宿主机Linux系统的网络。
[0003]现有技术存在的问题:DNS(Domain Name System域名系统)解析的问题。由于Android系统和Linux系统在一些基础依赖库上的差异,导致Android系统和Linux系统在进行DNS解析时存在差异。具体来说,就是getaddrinfo,getnameinfo,gethostbyaddr,getaddrbyname等等DNS的解析函数依赖于一些C/C++基本库,Android系统C/C++库使用的是bionic库,而GNU/Linux以及其他类Unix系统的基础函数库使用的是libc。这个差异导致了,运行于容器内的Android系统无法进行正常的DNS解析,只能通过IP来访问网络,其访问网络的功能是不完整的,有重大缺陷的。此外,现有技术还存在Android系统检测网络功能的问题。Android系统有一套检测网络的机制,当使用容器默认的网络时,这个网络既不是无线网络,也不是4G网络,Android系统在检测网络连接状态时,会断定Android系统既没有连接无线网络,也没有连接4G网络,导致Android系统判断网络没有连接。

技术实现思路

[0004]为了解决在Linux兼容Android环境中,Android访问网络的问题,本专利技术提供了一种Linux兼容Android的访问网络方法、装置、计算机设备和存储介质。
[0005]第一方面,本专利技术提供一种Linux兼容Android的访问网络方法,所述方法为:
[0006]Android系统或Android应用调用bionic库的DNS模块发起DNS请求;
[0007]bionic库的DNS模块对DNS请求信息编码,将编码后的数据通过socket发送给Linux;
[0008]Linux的后台服务进程接收编码后的DNS请求信息,查询DNS缓存表,若查询获得DNS请求的历史缓存记录,则将DNS请求的结果信息编码后发送给Android;若未查询到历史缓存记录,则对已编码的DNS请求信息解码,调用Linux的libc库进行DNS请求;
[0009]Linux的libc库将DNS请求的结果信息编码后发送给Android侧bionic库的DNS模块;Android侧bionic库的DNS模块对接收的DNS请求的结果信息解码,将解码的DNS请求的结果信息返回给Android系统或Android应用。
[0010]进一步地,所述方法中的DNS请求信息包括:bionic库的DNS请求函数名称以及DNS请求函数的参数。
[0011]进一步地,所述方法中的Linux的后台服务进程接收编码后的DNS请求信息,查询DNS缓存表,若查询获得DNS请求的历史缓存记录,则将DNS请求的结果信息编码后发送给
Android,具体为:
[0012]Linux的后台服务进程接收到编码后的DNS请求信息字符串后,以DNS请求信息字符串为关键字,在DNS缓存表中,以倒序的方式轮询是否存在DNS请求的历史缓存记录;如果存在,则Linux的后台服务进程将DNS请求的结果信息编码后通过socket发送给Android侧bionic库的DNS模块。
[0013]进一步地,所述方法中调用Linux的libc库进行DNS请求,具体为:
[0014]根据DNS请求信息中的bionic库的DNS请求函数名称以及DNS请求函数的参数,调用Linux的libc库相应的DNS请求函数,对DNS请求函数的参数变换处理后进行DNS请求。
[0015]进一步地,所述方法还包括:
[0016]Linux的后台服务进程接收编码后的DNS请求信息,若未查询到历史缓存记录,则对已编码的DNS请求信息解码,对DNS请求信息中的函数参数变换处理:将参数名称为ftp、http、https的,分别转换为服务端口号22、8080、443。
[0017]第二方面,本专利技术提供一种Linux兼容Android的访问网络装置,所述装置包括:
[0018]存储器,用于存储程序;
[0019]处理器,用于执行所述存储器中存储的程序,当所述存储器中存储的程序被执行时,所述处理器用于执行上述方法的步骤。
[0020]第三方面,本专利技术提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述方法的步骤。
[0021]第四方面,本专利技术提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述方法的步骤。
[0022]本专利技术与现有技术相比,具有以下优点:
[0023]实现了在Linux兼容Android的环境下,Android能正常进行网络访问。另外,当Android应用检测网络连接状态后,Android系统返回wifi已经连接的状态给应用,这样,Android系统的网络检测功能也正常了。
附图说明
[0024]图1为本专利技术实施例提供的一种Linux兼容Android的访问网络方法示意图;
[0025]图2为本专利技术实施例提供的一种Linux兼容Android的访问网络装置组成示意图。
具体实施方式
[0026]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。
[0027]对于在Linux操作系统上兼容运行Android的环境来说,Android运行环境是运行在容器中的。
[0028]通过容器技术可以在Linux系统运行一个新的Linux系统(包括其他基于Linux系统定制的系统,如Android),容器使得客户机系统和主机系统相互隔离。与传统的基于虚拟机技术的方案不同,在容器技术中,客户系统与主机系统共享CPU、内存、存储等资源,资源
开销很低。此外,通过适当的配置,还能使客户系统直接访问主机的硬件资源,进一步提升客户系统的性能。
[0029]Bionic库的DNS模块是Android系统中用来处理DNS请求的模块,而Linux系统中是通过libc基础库来进行DNS请求的。由于Android系统和Linux系统的差异,导致运行于容器内的Android系统使用bionic基础库进行DNS请求时出错。
[0030]在bionic的DNS模块中,用来进行DNS请求的函数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Linux兼容Android的访问网络方法,其特征在于,所述方法为:Android系统或Android应用调用bionic库的DNS模块发起DNS请求;bionic库的DNS模块对DNS请求信息编码,将编码后的数据通过socket发送给Linux;Linux的后台服务进程接收编码后的DNS请求信息,查询DNS缓存表,若查询获得DNS请求的历史缓存记录,则将DNS请求的结果信息编码后发送给Android;若未查询到历史缓存记录,则对已编码的DNS请求信息解码,调用Linux的libc库进行DNS请求;Linux的libc库将DNS请求的结果信息编码后发送给Android侧bionic库的DNS模块;Android侧bionic库的DNS模块对接收的DNS请求的结果信息解码,将解码的DNS请求的结果信息返回给Android系统或Android应用。2.如权利要求1所述的Linux兼容Android的访问网络方法,其特征在于,所述方法中的DNS请求信息包括:bionic库的DNS请求函数名称以及DNS请求函数的参数。3.如权利要求1所述的Linux兼容Android的访问网络方法,其特征在于,所述方法中的Linux的后台服务进程接收编码后的DNS请求信息,查询DNS缓存表,若查询获得DNS请求的历史缓存记录,则将DNS请求的结果信息编码后发送给Android,具体为:Linux的后台服务进程接收到编码后的DNS请求信息字符串后,以DNS请求信息字符串为关键字,在DNS缓存表中,以倒序的方式轮询是否存在DNS请求的历史缓存...

【专利技术属性】
技术研发人员:邱旭姚宏亮张耀斌鄢来标
申请(专利权)人:深圳技德智能科技研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1