2013-03-12 109 views
18

我已经在这个几天了,现在似乎无法找到解决方案。我想在iOS上通过wifi创建点对点网络。所有开源代码似乎都支持运行服务器或作为客户端,但是没有任何代码可以支持这两者 - 同行。有人知道我可以做到这一点吗?iOS上的对等网络通过WiFi

+1

你看过类似的东西:https://github.com/robbiehanson/CocoaHTTPServer我知道它仍然是一个客户端/服务器的关系,但它似乎内置Apple adhoc网络API仍然是私人的。 – JiuJitsuCoder 2013-03-12 15:23:12

+0

我不清楚你的问题。您是否正在寻找允许您在两台iOS设备之间创建一个adhoc WiFi网络的代码,或者您是否正在寻找一种方式让两台已通过WiFi连接的iOS设备执行p2p通信? – rmaddy 2013-03-12 16:21:12

+0

只需了解互联网和BSD套接字如何工作。使用bind()调用。使用STUN服务器。使用很多套接字。使用可达性通知API。枚举网络接口。绑定到具体的端口。如果你愿意,可以使用多播发送知识产权是美好的世界,但学习代码为苹果的人永远不会得到一个东西:-( – 2015-04-21 23:13:16

回答

3

您是否想过使用Apple的GameKit框架?我过去曾经使用它来进行设备之间的简单通信。这非常简单,可以让你快速走出门外。 This看起来像一个很好的教程。

+0

问题是这涉及他们接受我的应用程序可以使用gamekit,这似乎有点随机给用户 – Andrew 2013-03-12 16:16:59

+0

哪个部分, GameKit,GameKit UI还是两者兼而有之?您可以推出自己的所有自定义用户界面,而且没有人会更聪明.GKPeerPickerController将简化您的开箱生活,看起来并不像一个人在玩游戏。但是,您可以推出自己的解决方案并拥有自己的用户界面。 – 2013-03-12 17:36:51

+0

我目前在非游戏中使用GameKit进行p2p数据传输,并且我不知道用户曾被提示接受或批准此功能。连接相当容易设置,但是,与Wi-Fi相比,连接数据传输速度较慢,而且数据传输速度较慢。 – arlomedia 2014-12-02 18:29:03

1

您无法在iOS中使用当前的API以编程方式创建Wi-Fi网络。 GameKit提供了一些API来通过蓝牙来实现。

如果您希望使用CocoaHTTPServer实现自定义解决方案,请注意,您仍然无法创建直接的Wi-Fi连接,只需将设备连接到相同(预先存在的)wi -fi网络。

iOS中的临时对等Wi-Fi(如802.11s)还有几年的时间。也许iOSX;)

+0

[documentation](http://developer.apple.com/library/ios/#documentation/GameKit/Reference/GKSession_Class/Reference/Reference.html)说:GKSession对象提供使用蓝牙或Wi-Fi发现和连接附近的iOS设备的能力。 – 2013-03-12 17:39:48

+0

只有蓝牙用于直接点对点连接。无线局域网用于LAN上的Bonjour。 – cleverbit 2013-03-22 13:47:24

+0

GKSession在iOS 7 – user2159978 2015-01-09 09:24:53

14

iOS 7增加了Multipeer Connectivity Framework正是为了这个目的。

+0

中已弃用工作链接https://developer.apple.com/library/ios/DOCUMENTATION/MultipeerConnectivity/Reference/MultipeerConnectivityFramework/index.html – sage444 2014-10-15 08:19:14

+0

请参阅multipeer连接的实际操作:http://youtu.be/ MgP8wm7_-Xk – Aace 2014-11-14 04:11:19

+1

我不建议你使用这个框架。它非常普遍,但速度太慢。 – user2159978 2015-01-09 08:31:20

1

iOS支持Multipeer Connectivity framework,它使iOS设备能够通过蓝牙,基础设施(使用路由器)WiFi或P2P进行对话。

但是,它并没有提供明确使用P2P的方式。从设备的任何对等设备(其他iOS设备)的连接方式上都有一个抽象层,它目前不允许连接非iOS设备。

3

我认为Open Peer是正确的解决方案。它提供设备之间真正的直接点对点连接,而不需要中央服务器。看看这个介绍性的video

+2

开放同行通过互联网 – Karthik 2015-08-25 22:24:59