java 获取arp表,java – Android arp表 – 开发问题
我正在编写的Android应用程序有两个问题.
我正在从/ proc / net / arp中读出本地arp表,并在哈希映射中保存ip和相应的mac地址.看我的功能.它运作正常.
/**
* Extract and save ip and corresponding MAC address from arp table in HashMap
*/
public Map createArpMap() throws IOException {
checkMapARP.clear();
BufferedReader localBufferdReader = new BufferedReader(new FileReader(new File("/proc/net/arp")));
String line = "";
while ((line = localBufferdReader.readLine()) != null) {
String[] ipmac = line.split("[ ]+");
if (!ipmac[0].matches("IP")) {
String ip = ipmac[0];
String mac = ipmac[3];
if (!checkMapARP.containsKey(ip)) {
checkMapARP.put(ip, mac);
}
}
}
return Collections.unmodifiableMap(checkMapARP);
}
>第一个问题:
我也在使用广播接收器.当我的应用程序收到状态WifiManager.NETWORK_STATE_CHANGED_ACTION时,我检查是否建立了与网关的连接.如果为true,我调用我的函数来读取arp表.但是在这个阶段,系统还没有构建arp表.有时当我收到连接状态时,arp表是空的.
有人有想法解决这个问题吗?
>第二个问题:
我想以持久的方式保存网关的ip和mac地址.现在我正在使用Shared Preferences.也许写入内部存储更好?
有小费吗?
解决方法:
对于第一个问题,您可以在睡眠一段时间之后启动一个运行该方法的新线程,或者直到它有一些条目(使用邮箱创建Runnable以获取Map) – 除非您需要直接使用地图,那么我认为唯一的方法是等待参赛作品.例如(如果您需要直接使用地图):
public Map createArpMap() throws IOException {
checkMapARP.clear();
BufferedReader localBufferdReader = new BufferedReader(new FileReader(new File("/proc/net/arp")));
String line = "";
while ((line = localBufferdReader.readLine()) == null) {
localBufferdReader.close();
Thread.sleep(1000);
localBufferdReader = new BufferedReader(new FileReader(new File("/proc/net/arp")));
}
do {
String[] ipmac = line.split("[ ]+");
if (!ipmac[0].matches("IP")) {
String ip = ipmac[0];
String mac = ipmac[3];
if (!checkMapARP.containsKey(ip)) {
checkMapARP.put(ip, mac);
}
}
} while ((line = localBufferdReader.readLine()) != null);
return Collections.unmodifiableMap(checkMapARP);
}
标签:java,android
来源: https://codeday.me/bug/20190709/1412401.html
java 获取arp表,java – Android arp表 – 开发问题相关推荐
- java获取系统信息:java的信息、操作系统的信息、用户的信息、虚拟机的信息、系统设置的信息。
全栈工程师开发手册 (作者:栾鹏) java教程全解 java获取系统信息:java的信息.操作系统的信息.用户的信息.虚拟机的信息.系统设置的信息. package com.lp.app.windo ...
- Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL
Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...
- java获取下月末,java获取每月月末日期
java获取每月月末日期 比如要获取20140831 20140731 20140228 等等,并将结果放入到SELECT表单中. 项目中只需要获取两年即可,所以参数可自行修改. Calendar c ...
- java 获取键盘事件,java获取键盘事件
本人认为,实现它其实最 简单的莫属一个类,Java 本身就提供的,这个类就是 Scanner.先举个例子如下: import java.util.Scanner; /** * 测试从键盘读取用户的.. ...
- java 获取数据源_J2EE java 获取数据源
package com.tobacco.ermsuite.interfaces.util; import java.sql.Connection; import java.sql.SQLExcepti ...
- java 获取file后缀,Java获取文件后缀的方法
在对文件进行操作的时候,我们经常需要用到文件的后缀.但是Java API中并没有提供获取文件后缀的方法.下面的工具方法可以帮助我们实现这个目的. 方法1 代码示例: package org.4spac ...
- java获取当前年份(java获取当前年份后两位)
html标题中怎么动态显示当前年份例如标题:XXX2012年X? 请看标题,qq:912305899 JAVA什么时候会获取数据? 根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续 ...
- java获取当前年月日(java获取当前年月日时分秒毫秒)
java如何获取当前时间 年月日 时分秒 //得到long类型当前时间 long l = System.currentTimeMillis(); //new日期对象 Date date = new D ...
- java获取微秒时间,java获取当前时间微秒
()为获取当前系统时间,也可使用当前时间戳 获取时间戳三种方法执行效率比较: import java.util.Calendar; import java.util.Date; public clas ...
- Android在Java获取组件,在Java中解析HTML以获取Android应用
小编典典 这是我要怎么做: StringBuffer text = new StringBuffer(); HttpURLConnection conn = null; InputStreamRead ...
最新文章
- BCP BIA DRP 灾后业务连续性方案简述
- YTU_3137: 动态规划基础题目之拦截导弹
- 复读数组(nowcoder 1103A)
- 劲爆ORACLE优化,你不必是专家
- 如何在博客上添加小游戏【原创】
- mysql存储过程详解 mysql存储过程和函数
- 1788:Pell数列
- Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
- 超大流量分布式系统架构解决方案 人人都是架构师2.0
- 桌面图标分类软件Fences的缺点
- 网红超火罗马桌面时钟效果
- Linux中压缩解压工具使用
- 从程序员到项目经理(一)
- 【S2VD】S2VD半监督视频降雨方法(Semi-Supervised Video Deraining with Dynamical Rain Generator)论文学习
- IELTS Lexical Resources - Reading 1 social problem
- 2007-01-22 日志——让泪化作相思雨
- java俄罗斯方块程序_使用JAVA编写的俄罗斯方块程序, 具有非常全面的功能.
- Open3D点云库 C++学习笔记
- 工业超纯水机应用反渗透膜优势
- backtrack5的安装配置
热门文章
- Cocos2d_iphone游戏开发_视频教程__国内顶级专业IOS培训机构__(内部资料不外传)
- java string 截取_java string 怎样截取前n个字符?的解决方案列表
- Java String截取
- mac 改变终端字体颜色
- scp 传输文件指定端口、传输目录
- Gazebo仿真--URDF与SDF的区别
- CorelDRAW中网状填充工具该怎么使用
- mysql实习生笔试题_2011甲骨文Oracle实习生笔试题目
- Java编程题:井底一只青蛙,白天向上爬5米,晚上向下掉3米,写出在任意井高都能准确算出爬行天数的程序
- python抽样方法概述