安卓能否进行点对点的自组网络?

98

有没有可能在Android中设置adhoc对等wifi模式?例如,我想让一个手机广播一条消息,并使网络中的所有对等方接收该广播,而无需服务器。我希望使用wifi,因为蓝牙的范围更受限制。


1
你是在谈论“Android到Android”还是“Android到任何设备”(如PC、Mac、iPhone等)? - AlikElzin-kilaka
1
@Doughy 如果你找到了任何解决方案,请分享。 - nitin tyagi
11个回答

63

21
请投票支持这个Bug,对于任何对Android上的Ad Hoc感兴趣的人——我有一个应用程序的想法,由于缺乏Ad Hoc功能,它变得更加棘手。 - SamStephens

14

虽然Android无法找到和连接到自组网络,但它可以连接到接入点。因此,作为解决方法,您可以使用例如Connectify将您的无线网卡转换为接入点。


3
还有其他与Windows XP兼容的工具可用吗? - Faiz
最佳答案!这个工具运行迅速且完美无瑕。Connectify非常酷。 - Simon Gillbee
1
安装这个应用程序给我蓝屏了! - Jama A.

13

我和我的朋友正在撰写我们的学士论文,开发一个实现AODV协议(适用于移动网络的多跳路由)的Java库。最终的 “产品”包括一种在几个Android设备上创建/加入自组网的简单方法,以及通过该库发送和接收消息的接口。遗憾的是,像英雄、Nexus One这样的每种手机都有一个不同的方式来创建自组网,因此目前我们只支持少数几种手机。

这意味着一旦完成这个项目,具有root权限的用户可以通过将库的 .jar 文件包含在他们的Android项目中,实现他们的分布式应用程序(文件共享、游戏等)。

顺便提一下,这全部都是开源的。

http://code.google.com/p/adhoc-on-android/


1
非常抱歉,我完全忘记了这篇文章。如果有人感兴趣,我们今天刚刚提交了我们的论文(用英语写的!),我很乐意分享信息。我的邮箱是jradi88@gmail.com - Rabie Jradi
1
我已经上传源代码和文档(报告)至 http://code.google.com/p/adhoc-on-android/。 - Rabie Jradi
@RabieJradi,有没有其他设备的解决方法? - gumuruh
如果你想支持其他设备,不幸的是,唯一的方法就是实现所需命令(取决于手机!)来设置和拆除一个adhoc网络,并基于startstopadhoc.c(需要修改的文件)编译一个新的C库。你可以在这里找到源代码: https://code.google.com/p/adhoc-on-android/source/browse/trunk/jni/startstopadhoc.c如果你很幸运,你需要执行的命令可能与Nexus One的设置相似,因此只需使用现有的编译C库可能就足够了。 - Rabie Jradi
我们基本上通过查看以下项目 https://code.google.com/p/android-wifi-tether/ 找到了设置所需的命令。 - Rabie Jradi

9

您可以将您的安卓设备连接到已知的ad-hoc网络。

编辑/system/etc/wifi/tiwlan.ini文件。

WiFiAdhoc = 1
dot11DesiredSSID = <your_network_ssid>
dot11DesiredBSSType = 0 

编辑 /data/misc/wifi/wpa_supplicant.conf 文件

ctrl_interface=tiwlan0
update_config=1
eapol_version=1
ap_scan=2

如果这太简单了,可以参考这些说明

2
这仅适用于使用德州仪器WIFI实现的设备,并且需要root权限才能使用,而且并非所有设备都可用。 - Kevin Parker

7

API level 14起,已经提供了点对点WiFi网络的支持。


2
请注意,WiFi P2P API 中加载了多个错误。25397 26418 26483 - Calvin
1
我认为它只能在Wifi直连设备上运行。由于这是一项新的硬件功能,目前仅适用于手机,我们无法使用它连接到笔记本电脑。 - abat

6
您的答案是Wi-Fi直连,这是在ICS中提供的。这里有一个链接,在Android文档中解释。

4

在Android上使用JmDNS可能是可行的:http://jmdns.sourceforge.net/

有很多支持zeroconf的设备,因此这将使得不仅仅是Android设备可以进行发现。


1
尽管这个链接非常有用,但它根本没有回答问题。ZeroConf DNS != Ad Hoc wireless. - Kevin Parker

3
你可以使用Alljoyn框架来实现Android设备之间的点对点连接。它基于Ad-hoc网络,且是开源的。

这个例子很难理解@Selva 我已经分析了AllJoyn的源代码。 - gumuruh

2
我认为它并没有提供多跳无线数据包路由环境。但是你可以尝试集成一个简单的路由机制。只需要查看Wi-Share,以了解如何实现。

这个概念很好,但代码还没有到位... @jaxvy - gumuruh

1
是的,但:
1. root您的设备(如果您像我一样有Nexus S,请参见this
2. 安装root explorer(在市场上搜索)
3. 找到适当的wpa_supplcant文件并替换(备份原始文件),如this thread所示

以上步骤已在我的Nexus S I9023 Android 2.3.6上测试通过。


很好,@kreker...那么你可以使用Android 2.3进行WiFi点对点连接?太棒了!你能分享一下教程给我们吗? - gumuruh
@gumuruh 我的回答是教程。 - k4dima

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