在我的应用程序中,我想通过WiFi向多个用户发送文件,如果他们使用相同的WiFi连接而不使用TCP。如何获取连接到指定wify的用户列表。 我试过样品但我没有得到任何东西。
答案 0 :(得分:3)
Wi-Fi点对点(P2P)允许具有相应硬件的Android 4.0(API级别14)或更高版本的设备通过Wi-Fi直接相互连接,无需中间接入点(Android的Wi-Fi P2P)框架符合Wi-Fi Alliance的Wi-Fi Direct™认证计划)。使用这些API,您可以在每个设备支持Wi-Fi P2P时发现并连接到其他设备,然后通过比蓝牙连接更长的距离快速连接进行通信。这对于在用户之间共享数据的应用程序非常有用,例如多人游戏或照片共享应用程序
http://developer.android.com/guide/topics/connectivity/wifip2p.html 您也可以参考此链接以了解有关以编程方式的更多信息
答案 1 :(得分:3)
TCP是文件传输的一个很好的传输,我认为你不会想出不使用TCP开始的理由。所有Andriod设备都没有内置的文件传输协议,所以你仍然需要开发一个客户端。
此外,如果没有为您的目的安装自定义客户端的设备,则无法完全实现可靠且可靠的发现。每个客户都需要主动披露自己,或被动地回复请求。
被动:每个设备都可以使用实际ICMP(并不意味着它是已启用的设备),本地子网上的TCP或UDP数据包进行“ping”。因此可以逐位发现响应客户端,甚至可以共享扫描结果。
活动:反向方法是让每个启用的客户端发送多播数据报并监听它们(类似于ARP发现的工作方式)。请参阅:http://developer.android.com/reference/java/net/MulticastSocket.html
然后,每个客户端将以某种结构化,序列化的方式监听与您的文件数据和元数据的传入TCP连接,并准备好存储和/或处理这些连接。验证和授权的奖励点。
启用的客户端方法(具有客户端的设备)意味着您可以使用自己的发现和数据传输协议开发跨平台客户端并让它们相互通信。
答案 2 :(得分:1)
为此,您必须建立连接。使用Wi-Fi,您无法直接与客户端通信,意味着一对一通信(如蓝牙)。为此,您必须将发送方(在本例中为您的移动设备)和接收方(其他移动设备或任何东西)连接到一个路由器或集线器。从中可以与接收者沟通。
答案 3 :(得分:1)
您无法从您的应用中找到连接到同一wifi网络的其他设备,而其他设备不会以某种方式广播该信息。
有些路由器通过暴露的API将这些功能嵌入其中,我认为你需要在每个路由器的基础上实现这一功能。您可以使用http://www.polarcloud.com/tomato
来处理此问题或者,您可以使用某种框架在电话级别为您处理此问题。 Android API 14+实际上有一个库。看看Wi-Fi peer-to-peer documentation。此API特别适用于某些类型的设备,并且仅限于API 14或更高版本。
最后,你可以自己实现它。这应该不难。只要设备连接到wifi网络,您就可以使用android.net.wifi.WifiInfo.getSSID
将网络的SSID发送到您的服务器。然后,您的应用可以向服务器查询连接到同一SSID的其他设备,并允许它们之间的通信。
希望它有所帮助。
答案 4 :(得分:0)
首先存储阵列中不同计算机的ip地址。您可以使用线程通过在发送后逐个休眠线程向多个用户发送数据,这将有助于您做同样的事情