我正在开发一种类似于WiFi嗅探器的工具。为了实现这个目标,我使用了一个编译为ARM架构的tcpdump二进制文件。但前提是我需要知道WiFi接口的名称。
根据SDK文档中NetworkInterface提供了getName()方法。我计划使用这个方法,所以第一步是获取与我的WiFi接口对应的NetworkInterface对象。为了做到这一点,我使用WifiInfo获取IP地址,然后获取与此IP地址对应的InetAddress,最后使用静态方法getByInetAddress(InetAddress address)获取NetworkInterface的实例。
以下是我的代码:
输出结果:
但我期望得到类似这样的结果:
根据SDK文档中NetworkInterface提供了getName()方法。我计划使用这个方法,所以第一步是获取与我的WiFi接口对应的NetworkInterface对象。为了做到这一点,我使用WifiInfo获取IP地址,然后获取与此IP地址对应的InetAddress,最后使用静态方法getByInetAddress(InetAddress address)获取NetworkInterface的实例。
以下是我的代码:
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
InetAddress addr = InetAddress.getByAddress(bytes);
NetworkInterface netInterface = NetworkInterface.getByInetAddress(addr);
Log.e("MyTemp",netInterface.getName());
输出结果:
输出:
SSID: Nancy-Universite, BSSID: 00:19:30:6a:a9:40, MAC: B4:07:F9:D5:7C:8C, Supplicant state: COMPLETED, RSSI: -80, Link speed: 11, Net ID: 6
但我期望得到类似这样的结果:
eth0
我也尝试了isVirtual()方法,但它无法编译,我收到了一个错误消息,说该方法不适用于NetworkInterface类型。
我不明白发生了什么...
任何帮助都将不胜感激。