应用程序网络通讯需求的检测系统及方法
技术领域
本发明涉及网络通讯领域,尤其涉及一种应用程序网络通讯需求的检测系统及方法。
背景技术
通常的手持设备系统软件只能提供当前的网络连接状态,无法检测到当前活动的应用程序是否有网络通讯的需求。因此在无网络连接时,用户只能在应用程序返回网络通讯失败提示或长时间无反应后退出应用程序进行网络连接设置,待网络连接成功后重新运行应用程序。
DNS(Domain Name System)域名系统是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址。应用程序在进行网络通讯时往往需要发送DNS请求将域名映射为IP地址。
发明内容
本发明的目的在于提供一种应用程序网络通讯需求的检测系统及方法,在无网络连接时可以检测到当前活动的应用程序是否有网络通讯的需求,进而提示用户进行连网操作,用户无需退出应用程序就可以建立网络连接。
为解决上述问题,本发明提供一种应用程序网络通讯需求的检测系统,该系统包括:
网络连接管理模块,用于检测当前网络连接,并在检测到无网络连接时,根据发送DNS请求的应用程序的ID及名称提示用户连接网络;
DNS监听模块,用于启动守护进程监听应用程序在需要访问网络时向DNS服务器发送的DNS请求,确定发送所述DNS请求的应用程序的ID及名称,并将所述应用程序的ID、名称及DNS请求发送给所述网络连接管理模块。
进一步的,所述网络连接管理模块在检测到无网络连接时将DNS服务器设定为回环接口,并清除DNS缓存。
进一步的,所述DNS监听模块启动守护进程监听所述DNS请求,确定发送所述DNS请求的应用程序的ID及名称,包括:
监听所述回环接口以接收所述DNS请求;
解析与网络相关的套接字信息以得到发送DNS请求的对端套接字的索引节点编号;
查询包含所有文件描述符的目录中的文件描述符,进行索引节点编号匹配,确定发送所述DNS请求的应用程序的ID;
读取命令行参数,得到发送所述DNS请求的应用程序的名称。
相应的,本发明还提供一种利用上述的应用程序网络通讯需求的方法,包括:
所述应用程序在需要访问网络时向DNS服务器发送一DNS请求;
所述DNS监听模块启动守护进程监听所述DNS请求,确定发送所述DNS请求的应用程序的ID及名称,并将所述应用程序的ID、名称及DNS请求发送给所述网络连接管理模块;
所述网络连接管理模块检测当前网络连接,并在检测到无网络连接时,根据发送所述DNS请求的应用程序的ID及名称提示用户连接网络。
与现有技术相比,本发明提供的应用程序网络通讯需求的检测系统及方法,在应用程序需要网络通讯时发送DNS请求并确定应用程序ID和名称,将DNS请求转送到网络连接管理模块,实现了在无网络连接时也能实时检测应用程序是否有网络通讯的需求,及时提示用户进行连网操作,使用户无需退出应用程序就可以建立网络连接,避免了用户在无网络连接时长期等待应用程序返回网络通讯失败提示以及在应用程序长时间无反应后需退出应用程序进行网络连接设置的操作,改善了用户体验。
附图说明
图1是本发明一较佳实施例的应用程序网络通讯需求的检测系统的架构示意图;
图2是本发明一较佳实施例的利用应用程序网络通讯需求的检测系统的方法流程图。
具体实施方式
以下结合附图和具体实施例对本发明提出的应用程序网络通讯需求的检测系统及方法作进一步详细说明。
如图1所示,本发明提供一种应用程序网络通讯需求的检测系统,包括:
网络连接管理模块21,用于检测当前网络连接,并在检测到无网络连接时,根据发送DNS请求的应用程序10的ID及名称提示用户连接网络;
DNS监听模块22,用于启动守护进程监听应用程序10在需要访问网络时向DNS服务器30发送的DNS请求,确定发送所述DNS请求的应用程序10的ID及名称,并将所述应用程序10的ID、名称及DNS请求发送给所述网络连接管理模块21。
如图2所示,本发明还提供一种利用上述的应用程序网络通讯需求的检测系统的方法,包括如下步骤:
步骤S1,所述应用程序10在需要访问网络时发送一DNS请求至DNS服务器30;
步骤S2,所述DNS监听模块22启动守护进程监听所述DNS请求,确定发送所述DNS请求的应用程序10的ID及名称,并将所述应用程序的ID、名称及DNS请求发送给所述网络连接管理模块21;
步骤S3,所述网络连接管理模块21检测当前网络连接,并在检测到无网络连接时,根据发送所述DNS请求的应用程序10的ID及名称提示用户连接网络。
本实施例中,所述网络连接管理模块21在检测到无网络连接时将DNS服务器30设定为回环接口(loopback interface),例如IP:127.0.0.1,并清除DNS服务器30缓存。例如,在Linux系统中可以修改/etc/resolv.conf文件将DNS服务器30设定为回环接口,在Android系统中可以设置net.dns属性来将DNS服务器30设定为回环接口。
相应的,所述DNS监听模块22启动守护进程监听所述DNS请求,确定发送所述DNS请求的应用程序10的ID及名称,包括:
监听所述回环接口(可以是UDP 53端口)以接收所述DNS请求;
解析与网络相关的套接字信息(即/proc/net/udp)以得到发送DNS请求的对端套接字的索引节点编号;
查询包含所有文件描述符的目录(/proc/<进程ID>/fd)中的文件描述符,进行索引节点(inode)编号匹配,确定发送所述DNS请求的应用程序的ID;
读取命令行参数(即/proc/<进程ID>/cmdline),得到发送所述DNS请求的应用程序的名称。
需要说明的是,UDP是User Datagram Protocol的简称,中文名是用户数据包协议,用来支持那些需要在计算机之间传输数据的网络应用;而proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的,<进程ID>表示在proc下的进程目录,进程目录中的Cmdline的目录内容为命令行参数,Fd为一个包含所有文件描述符的目录。
综上所述,本发明提供一种应用程序网络通讯需求的检测系统及方法,在应用程序需要网络通讯时发送DNS请求并确定应用程序ID和名称,将DNS请求转送到网络连接管理模块,实现了在无网络连接时也能实时检测应用程序是否有网络通讯的需求,及时提示用户进行连网操作,使用户无需退出应用程序就可以建立网络连接,避免了用户在无网络连接时长期等待应用程序返回网络通讯失败提示以及在应用程序长时间无反应后需退出应用程序进行网络连接设置的操作,改善了用户体验。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。