Mac/Windows和Android之间的WiFi-Direct通信

9

是否可能让Android(>4.0)设备与Mac OS或Windows设备建立WiFi-Direct连接?


可能是重复的问题:使用WIFI连接从桌面PC向Android设备广播消息 - slayton
这不是WiFi Direct,但非常适合与Android共享内容:通过HTTP共享| F-Droid-免费和开源的Android应用程序存储库 - eapo
2个回答

5
根据Wifi-Direct Docs,该协议允许:
Android 4.0(API级别14)或更高版本的设备可通过Wi-Fi直接连接到彼此。
看起来谷歌没有通过API提供这种功能。虽然WiFi-Direct不是一种专有协议,但可以为任何平台实现。网上有一些帖子,人们试图在Windows下使用Wifi-Direct:
  • Broadcast message from Desktop PC to Android Device using WIFI connectivity
  • https://superuser.com/questions/417888/how-do-i-connect-a-laptop-running-windows-7-to-an-android-phone-using-wifi-direct
  • http://www.intel.com/content/www/us/en/wireless-products/my-wifi-technology.html
  • http://androidforums.com/android-lounge/552970-howto-wifi-direct-use-your-laptop-desktop-softap-android-reverse-tethering.html

  • -7

    你所需要的只是使用java.net.Socket。这取决于你所说的建立直接连接的含义。当在目标设备(Windows或Mac)上通过ServerSocket打开监听套接字时,TCP连接就建立了。在其他设备上,您可以使用带有目标地址的Socket。当然,Windows或Mac电脑可能需要在防火墙中打开该端口。

    我猜你实际上需要知道的是如何获取目标计算机的名称或如何发现本地网络上的计算机。不幸的是,我认为这与Android版本无关。您应该查看http://en.wikipedia.org/wiki/Zero_configuration_networking以获取一些提示。我担心在Android上需要打开特权端口,因为通常您必须成为root才能这样做。而这将需要rooted Android。

    当然,您应该明确指定直接连接的意图以及所需的软件。如果两端都有您的应用程序,则可以在Android上打开任何未分配和非特权端口。使用UDP定期广播Android设备的名称(可能要求用户输入其设备的名称)。使用组播发送请求,并以相同的方式接收回复。组播发送和接收需要您的应用程序在Android、Windows和Mac上都存在。现在,您可以从组播应用程序中读取它是什么类型的机器,以及它留下了哪个本地端口供您进行直接连接。从UDP消息的源头,您知道要连接到哪里。

    您可以使用一些框架来加快速度。所有这些都需要一些关于网络的知识,但我不知道是否有更简单和有效的解决方案。除非您提供有关直接连接要执行的详细信息。


    1
    套接字必须仅在现有的WiFi-Direct连接上建立。这就是我所要求的,而不是套接字连接。 - Elias Atahi
    OP并不是在询问如何在已建立的网络上设置类似TCP的连接。相反,OP想知道如何使用WiFi-Direct协议在计算机和Android设备之间建立新的网络连接。 - slayton

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