如何在没有任何服务器的情况下在两个以上设备之间创建连

时间:2011-07-12 15:42:47

标签: iphone objective-c ios ipad sockets

一切都在问题中..
我知道如何在iPad / iPhone(发送者)和许多其他设备iPad / iPhone(听众)之间建立连接。挑战是:我必须在不使用任何中间服务器的情况下创建它 每个设备监听器都应该“响应”每个发送者消息 有什么建议如何实现这个目标?

4 个答案:

答案 0 :(得分:1)

使用Bonjour框架。设备必须位于同一子网上,但您可以在不使用服务器的情况下连接它们。 Apple为Bonjour框架提供了一些很好的示例代码。我没有使用Bonjour发布应用程序,但我已经使用Bonjour完成了一些开发/概念验证应用程序。

答案 1 :(得分:1)

基本上你需要多播DNS(Apple称之为Bonjour)。有关Apple文档的开头,请参阅http://developer.apple.com/opensource/,并查看http://mobileorchard.com/tutorial-networking-and-bonjour-on-iphone/以获得精彩的文章。

答案 2 :(得分:0)

如果所有设备都在同一个局域网上,您可以让他们使用广播或多播UDP相互发现,然后(一旦他们知道彼此的IP地址)通过UDP或TCP直接相互通信。 (当然,所需的直接TCP连接数随着设备数量的增加而迅速增加,因此只会扩展到一定程度.UDP可以进一步扩展,因为它不需要在每对之间建立连接设备)。

真正的问题是,如果(很可能)设备位于Internet上的不同位置,并且其中一些或全部位于NAT和防火墙之后。在这种情况下,您可以依赖的唯一事情是设备能够建立传出的TCP连接,在这种情况下,您几乎需要一台服务器才能连接到它们,因为它们无法直接连接到每个其他在大多数情况下(出于安全原因,NAT /防火墙将过滤掉传入的TCP连接数据包)。

答案 3 :(得分:0)

通过蓝牙查看Peer-to-Peer connectivity(这是iOS中GameKit API的一部分)。