2014-01-28 48 views
3

我正在创建一个应用程序,需要连接到运行在wifi网络上的其他设备上的本身版本。目标是在一个设备与其他设备之间建立广播/客户端关系。没有Bonjour的iOS设备发现

我知道Bonjour是可以接受的方法,但我并不愿意这样做,因为它会将我锁定到iOS设备中,当我想分支给其他人时,至少对于客户。

如果我在特定端口(如43231等)上启动广播器上的网络服务器,客户端设备是否可以获得自己的IP,然后扫描广播器的广播块范围?用这样的请求ping网络上的所有其他随机设备有什么不好吗?

如在,广播者是192.168.1.11。客户端是192.168.1.4。如果客户端假定所有设备都在192.168.1。*模块中,它是否可以从1-100左右迭代寻找广播者?

如果这种方法很疯狂,我该怎么办?

回答

1

可以使用SSDP(由UPnP使用),或只是multicast在网络上的消息,并在同一时间听它,忽略了环回(如果你不想发送接收它自己的消息)。

+0

有趣。由于我保持广播者被动直到事件开始,我实际上可以从客户端进行组播以“注册”它们。 – UltimateBrent

+0

是的,我正在使用这种方法来制作类似于Apples AirDrop的应用程序,它的工作非常好。 –

1

也许使用蓝牙低功耗进行广播/发现会更好?您可以在服务器上发送不可连接的广告数据包(使用其IP地址),并在所有其他设备上监听它们。设备创建这样的数据包,读取IP地址并通过NSURLConnection(或类似的东西)连接到它。

+0

这是什么范围? – UltimateBrent

+0

理论上长达50米,但从我的经验来看,你可以期望在15-20米距离内有好的结果 – igoris