小编典典

我找到了解决问题的方法,大多数设备不在系统arp表中,因此您需要在第一次ping通每个设备,一旦ping该设备将存储在系统ARP表中,该表存储在

(/proc/net/arp)

使用ip ping所有设备:(首先,您需要找到设备的IP地址,然后才能确定子网掩码,然后可以从(0-255)开始固定

码:

public void startPingService(Context context)

{

List deviceInfoList = new ArrayList();

try {

WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();

String subnet = getSubnetAddress(mWifiManager.getDhcpInfo().gateway);

for (int i=1;i<255;i++){

String host = subnet + "." + i;

if (InetAddress.getByName(host).isReachable(timeout)){

String strMacAddress = getMacAddressFromIP(host);

Log.w("DeviceDiscovery", "Reachable Host: " + String.valueOf(host) +" and Mac : "+strMacAddress+" is reachable!");

LocalDeviceInfo localDeviceInfo = new LocalDeviceInfo(host,strMacAddress);

deviceInfoList.add(localDeviceInfo);

}

else

{

Log.e("DeviceDiscovery", "❌ Not Reachable Host: " + String.valueOf(host));

}

}

}

catch(Exception e){

//System.out.println(e);

}

}

private String getSubnetAddress(int address)

{

String ipString = String.format(

"%d.%d.%d",

(address & 0xff),

(address >> 8 & 0xff),

(address >> 16 & 0xff));

return ipString;

}

从ARP缓存表中获取Mac地址

public String getMacAddressFromIP(@NonNull String ipFinding)

{

Log.i("IPScanning","Scan was started!");

List antarDevicesInfos = new ArrayList<>();

BufferedReader bufferedReader = null;

try {

bufferedReader = new BufferedReader(new FileReader("/proc/net/arp"));

String line;

while ((line = bufferedReader.readLine()) != null) {

String[] splitted = line.split(" +");

if (splitted != null && splitted.length >= 4) {

String ip = splitted[0];

String mac = splitted[3];

if (mac.matches("..:..:..:..:..:..")) {

if (ip.equalsIgnoreCase(ipFinding))

{

return mac;

}

}

}

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally{

try {

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return "00:00:00:00";

}

您还需要以下权限:

2020-11-16

android ip地址扫描,如何准确扫描Android中连接到wifi的所有设备的IP和Mac地址?相关推荐

  1. 电脑的ip地址经常变化_电脑网络:分分钟通俗了解网关、DNS、子网掩码、MAC地址、DHCP...

    什么是网关.DNS.子网掩码,它有什么作用,确实,我们平时在网络中总是在不断的提到网关,却很少真正的去了解它. 例: 一.什么是网关 1.什么是网关 网关是一种充当转换重任的计算机系统或设备.在使用不 ...

  2. springboot查看请求ip、ip归属地、设备信息、本地MAC地址、操作系统信息

    springboot查看请求ip.ip归属地.设备信息.操作系统信息 1.在pom添加依赖 <dependency><groupId>eu.bitwalker</grou ...

  3. 小程序中,iOS设备获取蓝牙设备的Mac地址

    遇到的问题 在使用蓝牙的过程中,我们需要获取蓝牙设备的Mac地址.在Android设备上,onBluetoothDeviceFound方法中,deviceId是蓝牙设备的Mac地址.而在 iOS设备上 ...

  4. ble mac地址 协议_让BLE设备的名称包含MAC地址

    对于研发和测试BLE来说,经常看到同名的设备,是极为不方便的,一大堆设备同时上电会让同事不知道哪一个设备才是自己真正想操作的目标.再说一下小米手环,家中有三支小米手环,打开设备搜索全是"MI ...

  5. 华为设备静态组播MAC地址配置命令

    [Huawei-vlan10]l2-multicast forwarding-mode mac //配置VLAN内组播数据转发模式为MAC [Huawei-GigabitEthernet0/0/1]m ...

  6. 网络之mac地址和ip地址

    小白: 大牛,我有一个问题,我们在局域网里面都会用到 MAC 地址和 IP 地址,这两个地址的区别是什么? 大牛: 嗯,这是一个非常基础的问题,但是很重要.首先,MAC 地址和 IP 地址都是用于网络 ...

  7. 有了 IP 地址,为什么还要用 MAC 地址?(原作写的真好,转载记录了)

    转载于知乎链接 看了一下,大家说的基本都是教科书上的内容(或者演绎).今天给大家说点教材上没有说的内容.最早的网络是「猫」+电话线.一台电脑接一个猫,连一条电话线.理论上只要完成拨号,双方就能进行通信 ...

  8. 在 Linux 系统中查找 MAC 地址的方法

    参考文章: 多种方法在Linux上找到MAC地址 引言: MAC(Media Access Control)地址是网络设备(如网卡)的唯一标识符,用于在局域网中进行通信.在 Linux 系统中,有几种 ...

  9. android 打开wifi并链接到制定ip,当设备连接到Android中的WiFi时,如何获取蜂窝网络的IP地址...

    有没有办法我可以在 Android中同时获取WiFi和蜂窝网络的IP地址.我尝试使用很多例子,但是只能获得WiFi网络的地址而不是蜂窝网络.我启用了WiFi和蜂窝网络,设备正在通过WiFi上网. 以下 ...

  10. Android~获取WiFi MAC地址和IP方法汇总

    最近由于项目需求,需要获取手机WiFi的MAC地址和IP,于是乎网上搜罗了一波.各种版本的都有,各种方法都有,而且安卓6.0以下.6.0~7.0.7.0以上版本差异都很大!在这里我就集中给归一下类,方 ...

最新文章

  1. traceview android studio,TraceView 的正确打开方式
  2. 重大里程碑!VOLO屠榜CV任务,无需额外数据,首次在ImageNet 上达到87.1%
  3. gRPC Web使用指南
  4. angularjs 利用filter进行表单查询及分页查询
  5. (二分)Trailing Zeroes (III)
  6. 推荐一条高效的Python爬虫学习路径!
  7. win7下wifi密码的保存路径
  8. VS对.ini文件的操作
  9. 【Redis】redis数据类型及应用场景
  10. hive對於數據是懶加載的_05-配置数据库的远程连接 创建hive数据库的时候要选择latin1...
  11. python 通达信函数_python调用通达信公式,大智慧公式转python
  12. 简指南越狱的iOS及原因,负责其
  13. Lenovo预装系统激活工具
  14. 自动配置的IPv4地址怎么取消
  15. P1413 坚果保龄球洛谷c++题解
  16. PHP版本美团闪购开放平台sdk
  17. LeetCode - 1419 数青蛙
  18. 刻章不要钱 5个在线印章制作工具
  19. 联想在钛媒体峰会上提前泄漏了MOTO新杀器
  20. WIN7主题下载http://bbs.windows7en.com/?fromuid=896008

热门文章

  1. 程序员自编的中华古诗词数据库在GitHub上火了!
  2. 用java写图形验证码,超级简单
  3. 在线解析短视频去水印工具
  4. 搜苹果ipad版_春季课前第3轮评估! 安卓苹果电脑端全平台支持!
  5. matlab巴特沃斯滤波器算法解释,巴特沃斯滤波器原理.doc
  6. 【opencv】 报错:C2065 “CV_COVAR_ROWS”、“CV_COVAR_NORMAL”、“CV_COVAR_SCALE”: 未声明的标识符、
  7. CMD使用教程-整理最全面的cmd用法
  8. 数据清洗以及常用的方法
  9. 论文查重系统原理是什么?
  10. 搜索引擎的原理以及倒排索引技术