【问题标题】:Is it possible to scan for all the WiFi enabled android devices, not just hotspots?是否可以扫描所有支持 WiFi 的 Android 设备,而不仅仅是热点?
【发布时间】:2012-10-17 23:41:59
【问题描述】:

我一直在尝试开发一个扫描附近 WiFi 设备的应用程序。我在市场上发现了很多类似的应用程序,但它们只扫描附近的热点(接入点)。是否可以扫描并找到刚刚单独打开 WiFi 的设备。

如果是这样,请告诉我如何(代码 sn-p).. 提前谢谢..

【问题讨论】:

  • 你有没有相同的解决方案?
  • 是的,@GPcyborg,你解决了吗?

标签: android android-wifi android-wireless


【解决方案1】:

答案分为两部分。

  1. 大多数 WiFi 设备都可以在 AP 模式下运行(如果安装了正确的软件),在这种情况下,任何扫描周围的人都会将它们显示为普通 AP。
  2. 如果您想查找其他未处于 AP 模式的 WiFi 设备,您需要将设备切换到混杂(嗅探器)模式。这需要您的设备驱动程序/固件支持。在嗅探器模式下操作会导致设备指示空中的所有数据包,包括那些未发送给您的数据包。如果您的设备支持此操作模式,您需要通过发送相关命令来指示它 - 这是一个专有接口,因设备软件供应商而异。

【讨论】:

  • 非常感谢你的明确回复,icepack .. 你知道安卓操作系统是否支持嗅探吗?
  • 这不是操作系统本身的问题,而是您特定卡的驱动程序的问题。获取设备的文档或查看 android 内核。现代网络设备软件应该支持嗅探。
  • 还有另一种可能。您可以通过 WiFi Direct 进行扫描。 developer.android.com/reference/android/net/wifi/p2p/…
【解决方案2】:

这些附近的设备必须发送一些信号,您的设备可以接收这些信号才能检测到它们。我认为他们通常不会那样做。但是,如果您可以在其他设备上安装应用程序,则此应用程序可以发送广播信号,您的设备可以接收到该信号。

如果没有标准信号,您可以收听,那就很难了。您必须构建某种网络嗅探器。

【讨论】:

    【解决方案3】:

    嗅探器是读取直接端口的过程,在本例中为监听端口 wifi。读取一个端口意味着指向一个指定的地址并读取同一个缓冲区。这个过程是低级的,你必须在纯 C 中完成并在 NDK 中编译。如果你知道这些问题是复杂的。

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2012-10-08
      相关资源
      最近更新 更多