Android如何获取到连接的WIFI无线路由器的所有客户端的MAC地址?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android如何获取到连接的WIFI无线路由器的所有客户端的MAC地址?相关的知识,希望对你有一定的参考价值。

使用192.168.0.1,进入设置页面可以查看到当前WIFI无线路由器的所有客户端的MAC地址。那么,问题来了,我将通过什么手段使android获取到这些信息。
方案一:直接使用手机访问192.168.0.1,在设置页面抓取MAC地址。那么该如何抓取呢?
方案二:ping同一网段的所以IP,ping通,获取MAC地址。
各位大侠请给出建议,相关技术,我好去查询相关材料,谢谢各位了。

查看无线路由器上连接了几台设备及其MAC地址的方法:
1、电脑连接无线路由器任一LAN口,打开浏览器,地址栏输入路由器网关地址(路由器背后标签上有的),进入设置页面。
2、点击“无线设置”—“主机状态”—查看右侧“当前所连接的主机数”。这样就能看到连接到这个无线路由器的设备的MAC地址了。
参考技术A 路由器连接的mac地址池都是直接支持导出的,不需要抓取什么页面这些,都可以直接导出追问

大侠,请讲解一下相应的技术、方法或Android指令,我去查资料。

如何以编程方式在android中获取连接的wifi路由器的IP地址?

【中文标题】如何以编程方式在android中获取连接的wifi路由器的IP地址?【英文标题】:how to obtain the ip address of the connected wifi router in android programmatically? 【发布时间】:2012-08-13 15:29:58 【问题描述】:

我想获取我的android手机所连接的wifi路由器的IP地址?我知道我们可以通过android APIS获取mac/BSSId和SSID,但是我找不到找到它的ip地址的方法?

我找到了获取手机ip地址的代码,拥有wifi路由器

WifiManager myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
int ipAddress = myWifiInfo.getIpAddress();
System.out.println("WiFi address is " + android.text.format.Formatter.formatIpAddress(ipAddress))

但没能得到我想要的

【问题讨论】:

试试这个解决方案。 ***.com/a/6071963/735675 使用给定的代码你得到了什么?你想得到什么? 你添加权限了吗?我确定你的代码没有问题。 @paritybit 我想获取路由器的IP地址,这样我就可以连接到另一个连接到同一路由器的安卓手机 @Dya bro 这将给出android设备的IP地址..我想要它所连接的路由器的IP地址 【参考方案1】:

你可能想要的是DhcpInfo:

final WifiManager manager = (WifiManager) super.getSystemService(WIFI_SERVICE);
final DhcpInfo dhcp = manager.getDhcpInfo();
final String address = Formatter.formatIpAddress(dhcp.gateway);

这将生成(格式化的)网关 IP 地址,应该就是您要查找的地址。

【讨论】:

这是一个非常简单的解决方案,主要目标 - 它的工作原理。但很遗憾,它不支持 IPv6 它给了我本地 IP 地址【参考方案2】:

由于 formatIpAddress 已被弃用,这里是替代方案:

public String getHotspotAdress()
    final WifiManager manager = (WifiManager)super.getSystemService(WIFI_SERVICE);
    final DhcpInfo dhcp = manager.getDhcpInfo();
    int ipAddress = dhcp.gateway;
    ipAddress = (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) ?
            Integer.reverseBytes(ipAddress) : ipAddress;
    byte[] ipAddressByte = BigInteger.valueOf(ipAddress).toByteArray();
    try 
        InetAddress myAddr = InetAddress.getByAddress(ipAddressByte);
        return myAddr.getHostAddress();
     catch (UnknownHostException e) 
        // TODO Auto-generated catch block
        Log.e("Wifi Class", "Error getting Hotspot IP address ", e);
    
    return "null"

【讨论】:

以上是关于Android如何获取到连接的WIFI无线路由器的所有客户端的MAC地址?的主要内容,如果未能解决你的问题,请参考以下文章

android手机如何获取自己手机设置的wifi热点的bssid

WiFi登录 老是显示正在获取IP地址

手机搜不到无线网络是怎么回事?

Android网络开发之WIFI

wifi一直显示正在获取ip地址怎么办

如何破解WiFi禁用? 我们单位设置的无线设备手机、平板,禁止连WiFi,连上就断网,有方法破解吗?