Chr*_*ler 5 iphone networking p2p bonjour
我正在实施一个iPhone/iPad应用程序,允许用户使用bonjour协议发送彼此的消息.基本上,服务器通过bonjour发布他的服务,连接到同一wifi的客户端可以发现他的服务并连接到它以开始发送消息.我发现的问题是有些路由器似乎与Bonjour有问题.在家里或其他地方运行我的应用程序时,它运行得很好.出版和发现的bonjour服务完美无瑕.然而,当我在我朋友的一间公寓试用我的应用程序时,一些(并非所有)客户都无法发现已发布的bonjour服务.我还注意到其他使用Bonjour的应用程序(例如Apple的远程应用程序)在所述网络上也遇到了麻烦.在做了一些挖掘后,我发现其他人在使用bonjour和一些路由器方面遇到了类似的问题.因此我有两个问题:
1)有没有人知道一些路由器似乎有Bonjour的这个问题是一个普遍的问题?换句话说,如果我的应用程序依赖于Bonjour才能运行,我是否必须担心它不会在50%的WLAN网络中运行,或者大多数路由器都没有任何bonjour问题.显然,我不能指望任何人知道每个路由器如何处理bonjour数据包,但也许有一些网络大师可以指出我正确的方向:-p.
2)其次,如果bonjour对于构建我的应用程序的协议风险太大,有哪些替代方案具有类似的功能?我(优选地)需要的特征是服务发布和发现,而无需用户手动输入其他电话的IP地址.
好的,谢谢你的帮助!我知道这是一个广泛的问题,但任何帮助表示赞赏!:)
这可能是一个棘手的难题。导致设备在某些网络上无法找到彼此的问题与底层传输(即多播 UDP)有关,而不是 Bonjour(或 mDNS 或任何您想称之为的其他名称)。
从高层次、非严格的角度来看,组播数据给路由器带来了更多的负载。大型企业和大学网络有时喜欢丢弃 Bonjour 消息(即发送到224.0.0.251端口 上的多播组的 UDP 数据包5353),因为这意味着网络不会被成千上万的客户端广告其 iTunes 库或其他内容淹没,并且在规模上这可以改善总体情况表现。另一方面,一些家用路由器出于只有制造商所知的原因而直接丢弃多播数据包。对于这两种情况你都无能为力。
尝试在网络上运行 atcpdump以查看数据包是否确实通过。我已经有一段时间没有遇到过不转发它们的家庭路由器了。如果不是,您将不得不想出一些中央[也许是面向互联网的?]查找工具。如果它们是可见的,那么您的实施就有问题。
没有什么可以阻止您编写自己的更简单的协议来通过多播发送服务发现 - 只是已经有大量不同语言的 Bonjour 客户端已编写和测试。
| 归档时间: |
|
| 查看次数: |
1762 次 |
| 最近记录: |