检测连接到Wifi的安卓设备

4

我想制作一个连接到Wifi网络的Android应用程序,例如网络SSID =“ABC”。假设它已连接到Wifi ABC。连接到ABC后,我希望我的应用程序显示连接到同一Wifi ABC网络的所有Android设备的IP地址。我该如何实现?谢谢


欢迎来到 Stack Overflow!请避免使用答案来发布额外信息或对其他答案进行跟进回复。只需编辑您的问题以提供澄清,或使用每个发布的答案下面的评论与其作者直接互动。 - Tim Post
2个回答

4

请查看您手机上的文件:/ proc / net / arp。

它具有连接到同一网络的所有其他设备的IP和MAC地址。但是,恐怕您无法区分它们是否为Android手机。


1

您需要使用tcpdump将网络卡置于混杂模式,然后捕获数据包以识别您网络中的其他客户端。

如何在Android上使用tcpdump: http://source.android.com/porting/tcpdump.html

您可以在代码中运行命令,例如:

try {
    // Executes the command.
    Process process = Runtime.getRuntime().exec("/system/bin/ls /sdcard");

    // Reads stdout.
    // NOTE: You can write to stdin of the command using
    //       process.getOutputStream().
    BufferedReader reader = new BufferedReader(
            new InputStreamReader(process.getInputStream()));
    int read;
    char[] buffer = new char[4096];
    StringBuffer output = new StringBuffer();
    while ((read = reader.read(buffer)) > 0) {
        output.append(buffer, 0, read);
    }
    reader.close();

    // Waits for the command to finish.
    process.waitFor();

    return output.toString();
} catch (IOException e) {
    throw new RuntimeException(e);
} catch (InterruptedException e) {
    throw new RuntimeException(e);
}

1
假设我正在接收指定给所有设备的数据包,其中包括连接到WiFi的任何计算机或移动设备,那么我如何能够通过查看数据包来区分Android设备和非Android设备?是否有一种方法可以通过发送/接收数据包的应用程序来区分数据包/进程? - Farhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接