Android在以太网下如果获取子网掩码、默认网关、DNS啊?

tlh0212 2013-09-12 03:56:08
如题,在以太网下我只能获取到IP地址,请问有谁知道子网掩码、默认网关、DNS如果获取啊?注意在以太网连接下哦,不是wifi!
...全文
4582 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kequanjade 2015-10-13
  • 打赏
  • 举报
回复
你好 我也遇到了这样的需求 求帮助 qq929842382
alion_tuo 2014-10-16
  • 打赏
  • 举报
回复
public String getLocalHostIp() { String ipaddress = ""; try { Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); // Traverse the network interface while (en.hasMoreElements()) { NetworkInterface nif = en.nextElement();// Each network // interface binding,all // IP Enumeration<InetAddress> inet = nif.getInetAddresses(); // Traverse each all the IP interface binding while (inet.hasMoreElements()) { InetAddress ip = inet.nextElement(); if (!ip.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ip .getHostAddress())) { Log.e("--------------------IP", ip.getHostAddress()); return ipaddress = ip.getHostAddress(); } } } } catch (SocketException e) { Log.e("---------------feige", "获取本地IP失败"); e.printStackTrace(); } return ipaddress; }
alion_tuo 2014-10-16
  • 打赏
  • 举报
回复
因为你们写的是空肯定会空啊,你们自己定义一个返回值就OK了
harry8808 2014-04-24
  • 打赏
  • 举报
回复
我的也为空,机顶盒获取DNS
Evlet888 2014-04-11
  • 打赏
  • 举报
回复
为什么我的获取 机顶盒 以太网的 ip地址,掩码,网关,DNS全为空啊!???????求解!!
tlh0212 2013-09-24
  • 打赏
  • 举报
回复
引用 6 楼 shen332401890 的回复:
不是来抬杠的,貌似你这个方法public static String getMacAddress(){并不能在所有的手机都 适用。我拿自己的手机测试了一下,并没有找到eth0这个节点。 我的地址是/sys/class/net/wlan0/address
额、额、我的测试是在公司生产的平板上,不是在手机上测的,sorry,忘了说明了!
tlh0212 2013-09-18
  • 打赏
  • 举报
回复
把已经得到的信息的方法附上,都是从别人那里整理的,验证过木有问题。 下面附上获取mac地址,以太网下获取IP的方法以及wifi下获取网络信息的方法。 获取Mac地址: public static String getMacAddress(){ try { return loadFileAsString("/sys/class/net/eth0/address") .toUpperCase().substring(0, 17); } catch (Exception e) { e.printStackTrace(); return null; } } 以太网下获取IP: public static String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf .getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { Log.e("WifiPreference IpAddress", ex.toString()); } return null; } wifi下获取相关网络信息: wm = (WifiManager) getSystemService(Context.WIFI_SERVICE); d = wm.getDhcpInfo(); //将地址码转换成字符串类型 public String FormatString(int value){ String strValue=""; byte[] ary =intToByteArray(value); for(int i=ary.length-1;i>=0;i--){ strValue+=(ary & 0xFF); if(i>0){ strValue+="."; } } return strValue; } public byte[] intToByteArray(int value){ byte[] b = new byte[4]; for (int i = 0; i < 4; i++){ int offset = (b.length - 1 - i) * 8; b = (byte) ((value >>> offset) & 0xFF); } return b; } IP:FormatString(d.ipAddress).toString(); 默认网关:FormatString(d.gateway).toString(); 子网掩码:FormatString(d.netmask).toString();
tlh0212 2013-09-18
  • 打赏
  • 举报
回复
引用 2 楼 shayankuan 的回复:
EthernetDevInfo mEthInfo = mEthManager.getSavedEthConfig(); Log.i(TAG, "mEthInfo == null : " + (mEthInfo == null)); if (mEthInfo != null) { String ipAddress = mEthInfo.getIpAddress(); String netMask = mEthInfo.getNetMask(); String dns = mEthInfo.getDnsAddr(); String gateWay = mEthInfo.getRouteAddr();
EthernetDevInfo 这个class import android.net.ethernet.EthernetDevInfo;会提示找不到啊,我在api里面也没有找到呢,难道真的像别人说的EthernetDevInfo 在framework层?这样的话,我怎么使用呢?傻眼了、、、、
tlh0212 2013-09-18
  • 打赏
  • 举报
回复
引用 1 楼 shen332401890 的回复:
android 执行linux命令 试试看 目测不需要root权限
额,linux命令的话,应该可以看到的,可是要怎么显示在android应用的界面上啊?求指点
顾小林 2013-09-18
  • 打赏
  • 举报
回复
mark 一下学习。
顾小林 2013-09-18
  • 打赏
  • 举报
回复
不是来抬杠的,貌似你这个方法public static String getMacAddress(){并不能在所有的手机都 适用。我拿自己的手机测试了一下,并没有找到eth0这个节点。 我的地址是/sys/class/net/wlan0/address
shayankuan 2013-09-16
  • 打赏
  • 举报
回复
EthernetDevInfo mEthInfo = mEthManager.getSavedEthConfig(); Log.i(TAG, "mEthInfo == null : " + (mEthInfo == null)); if (mEthInfo != null) { String ipAddress = mEthInfo.getIpAddress(); String netMask = mEthInfo.getNetMask(); String dns = mEthInfo.getDnsAddr(); String gateWay = mEthInfo.getRouteAddr();
顾小林 2013-09-12
  • 打赏
  • 举报
回复
android 执行linux命令 试试看 目测不需要root权限

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧