我想通过 WiFi 使用我的智能手机连接到我的笔记本电脑和其他智能手机。我写了一个应用程序(android),但只能找到wifi网络,没有设备。有谁知道如何找到智能手机和笔记本电脑?
2 回答
根据您的问题,我认为您的智能手机是基于 Android 的。我还假设,当您说“找不到设备”时,您的意思是您的笔记本电脑创建的 WLAN 网络。
我似乎记得在 Android 文档的某处读过 Android 设备无法连接到(甚至检测到)ad-hoc 无线网络。Ad-hoc 网络通常是由非专用网络设备(例如 Windows 计算机)托管的网络。
您可以使用一些实用软件来使用您的计算机创建基础设施类型的无线网络(与 ad-hoc 相对)。除此之外,您几乎只能使用由网络路由器托管的实际基础设施无线网络,并通过它连接所需的设备,这基本上是通常的 (W)LAN 使用场景。
好问题!WiFi 与蓝牙和其他一些协议不同,它不允许您发现网络中的其他设备。要在 WiFi 网络上查找其他设备,您需要在 TCP 堆栈的更高层中运行应用程序。然后,您可以向所有设备发送 TCP 或 UDP 数据包,如果您收到回复,您几乎可以确定其他设备在网络中。这是一个非常脆弱的过程,许多障碍(例如防火墙)可能会阻止发现过程。这就是为什么您需要等待 Windows 发现网络打印机或网络计算机的原因。
要在 Java/Android(或任何其他平台)中实现这样的事情,最简单的方法是编写一个运行后台线程并监听广播消息的应用程序。当你想开始一个发现过程(在发现者端)时,你发送一个广播消息并等待回复。在另一端(discover-ee 端),如果您收到广播消息,您只需使用所需信息(例如,设备名称)回复该消息。收到回复消息后(在发现器上),您可以轻松找出网络中的其他设备。
或者,您可以使用 TCP 套接字进行探测。在这种情况下,由于不支持广播消息,您需要尝试连接到网络中每个可能的 IP 地址(通常,这至少是 255 个 IP 地址),这会使过程变得更慢。
这可能会有所帮助。