android 获取dns地址吗,Android: 获取dns IP地址
在Android系统中,想获取dns server的IP地址并不是一件容易的事,在bionic中,有关于获取dns IP地址的相关代码,但是你在native代码中却不能接调用相关的函数获取。
如在bionic/libc/include/resolv.h中有如下声明:
__BEGIN_DECLS
#pragma GCC visibility push(default)
struct res_state;
extern struct __res_state *__res_state(void);
#define _res (*__res_state())
#define b64_ntop __b64_ntop
#define b64_pton __b64_pton
extern int b64_ntop(u_char const*, size_t, char*, size_t);
extern int b64_pton(char const*, u_char*, size_t);
#define dn_comp __dn_comp
extern int dn_comp(const char*, u_char*, int, u_char**, u_char**);
extern int dn_expand(const u_char*, const u_char*, const u_char*, char*, int);
#pragma GCC visibility pop
__END_DECLS
文件中设置了编译条件:visibility为default, 而在bionic/libc/Android.mk文件中,将visibility设置为了hidden, 就是使得你在native代码中使用了_res或者是__res_state()函数时,在进行编译链接时,会报如下错误:
: error: undefined reference to '__res_state'
collect2: error: ld returned 1 exit status
既然这条路行不通,那我们还有什么别的办法吗,先看一下与dns相关的系统属性:
$ adb shell getprop | grep dns
[dhcp.wlan0.dns1]: [10.0.0.1]
[dhcp.wlan0.dns2]: []
[dhcp.wlan0.dns3]: []
[dhcp.wlan0.dns4]: []
[net.change]: [net.dns1]
[net.dns1]: [10.0.0.1]
这里我们可以看到当前连接的wifi网络的dns以及系统全局使用的dns(net.dns1),也许,我们只能从系统属性获取dns了。
在java代码中,我们可以通过LinkProperties即调用ConnectivityManager.getLinkProperties()得到特定网络的相关信息,当然这其中也包含了dns server的信息(LinkProperties.getDnsServers()):
Describes the properties of a network link. A link represents a connection to a network. It may have multiple addresses and multiple gateways, multiple dns servers but only one http proxy and one network interface. Note that this is just a holder of data. Modifying it does not affect live networks.
相关的代码如下:
// ...
ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
for (Network network : cm.getAllNetworks()) {
NetworkInfo networkInfo = cm.getNetworkInfo(network);
if (networkInfo.getType() == activeNetworkInfo.getType()) {
LinkProperties lp = cm.getLinkProperties(network);
for (InetAddress addr : lp.getDnsServers()) {
// Get DNS IP address here:
}
}
}
// ...
android 获取dns地址吗,Android: 获取dns IP地址相关推荐
- 探索浏览器(二)向DNS服务器查询Web服务器的IP地址
1.IP地址基础知识 (1)尽管浏览器能解析网址并生成HTTP消息,但它本身是不能发送网络消息的,这必须委托给操作系统来实现.在此之前,我们要查询网址中的服务器域名找到对应的IP地址.所以任务又可以细 ...
- 《网络是怎样连接的》第一章第二节:向DNS服务器查询Web服务器的IP地址
<网络是怎样连接的>第一章:浏览器生成消息 概述:这本书以 "从在浏览器输入网址,到屏幕显示出网页,当中到底发生了什么?"为疑问,探究其中的过程.本章讲的是浏览器怎么把 ...
- PHP获取IP地址的方法,防止伪造IP地址注入攻击
PHP获取IP地址的方法,防止伪造IP地址注入攻击 原文:PHP获取IP地址的方法,防止伪造IP地址注入攻击 PHP获取IP地址的方法 /*** 获取客户端IP地址* <br />来源:T ...
- iOS 如何获取手机外网IP地址(附内网IP地址)
查找了一些方法,最初以为拿到的就是手机对外的公网地址,其实只是本地IP地址.下面把获取手机内外网IP地址的方法总结下: 一.获取手机本地静态IP地址:(局域网) 方法1: 首先导入头文件: //IP地 ...
- dns按来路ip智能解析_求助DNS问题,如何根据来源Ip地址作策略,使不同来源的IP地址解析到不同地址?...
求助DNS问题,如何根据来源Ip地址作策略,使不同来源的IP地址解析到不同地址? (2012-01-10 08:43:58) 标签: ip地址 如何 杂谈 求助DNS问题,如何根据来源Ip地址作策略, ...
- 【网络是怎么连接的】—— 1.2 向 DNS 服务器查询 Web 服务器的 IP 地址
目录 1.2 向 DNS 服务器查询 Web 服务器的 IP 地址 1.2.1 IP地址基础知识 1.2.2 域名和 IP 地址并用的理由 1.2.3 Socket 库提供查询 IP 地址的功能 1. ...
- Python获取局域网内可连通的主机ip地址
使用python来获取整个局域网内可以连通的主机ip地址: 整体是思路就是 1.先获取我本机的ip地址 2.拿到我本机ip后,截取ip的最后一段,保留前一部分网段信息 3.调用cmd命令,循环从1循环 ...
- 阿里云域名DNS解析到网站服务器空间IP地址教程
阿里云域名添加网站解析是指域名解析到网站空间或服务器的IP地址,实现通过域名可以访问网站的效果,阿里云百科分享阿里云域名解析到服务器或空间IP地址的教程: 阿里云域名添加网站解析教程 阿里云域名解析到 ...
- 2021-08-26——获取电脑真实的IP地址,忽略虚拟机等IP地址的干扰
获取电脑真实的IP地址,忽略虚拟机等IP地址的干扰 此代码中只要读取到了WiFi或者有线地址其中之一立即return. 微信搜索"HUC思梦"关注我吧,关注有惊喜,不定时有免费资源 ...
- 获取公网、局域网、以及根据ip地址找城市
1.公网代码 package com.fan.study.ip;import java.io.BufferedReader; import java.io.IOException; import ja ...
最新文章
- Jquery为DIV添加点击事件,Jquery为a标签超链接添加点击事件
- css3鼠标果果变手型代码_css3 鼠标悬浮动画效果
- 利用深度学习方法进行情感分析以及在海航舆情云平台的实践
- 隐藏频道_《TED频道》-隐藏真实自我
- 李倩星r语言实战_《基于R的统计分析与数据挖掘》教学大纲
- 从零开始学spring-boot(2)-集成spring-data-jpa
- html网页如何获取后台数据库的数据(html + ajax + php + mysql)
- ABP入门系列(16)——通过webapi与系统进行交互
- 贝叶斯网络的应用实例一
- excel首行空不能导入access_终于解决SQL Server 2008 64位系统无法导入Access/Excel的问题 2012/08/01...
- C++算法学习(回溯算法)
- java 组件更新,java – 我可以批量处理一些Swing组件更新,以便重绘全部一次完成吗?...
- java 复制网页文字,网页文字和图片不能复制怎么办
- 微信支付解决多商户平台收款
- vue 统计中英文字符串长度_Ant Design Vue实现区分中英文分全角/半角字符长度校验功能...
- 前端架构师的YY定义
- LD、CD、VCD、SVCD、DVD、DVCD、HDCD
- 企业最需要的邮件服务器5大功能模块
- 光盘复制-DVD光盘复制格式剖析
- 核电站问题 解题报告