我在端口66661上启动TCP侦听服务器。我创建了一个关于此的Bonjour通知。没问题。
在任何人在66661连接之前,该应用程序在另一个端口上创建另一个不相关的网络服务(另一个TCP侦听服务器),并以相同的方式创建一个Bonjour广告,这次是在66662。
这也很有效,设备可以看到Bonjour广告,然后在66662连接。
请注意,66661应该并且确实可以让其他类型的播放器连接到那里......没问题。
但是......我发现 - 在66662之后 - 66661的bonjour广告很冒险。
有时会出现/有时会消失。(我们无法找到确切的模式。)
在开始第二个Bonjour广告后,有没有人在Bonjour看到过这种奇特?
解决方案解决方案.. 66662很高兴之后,我只为66661创建了另一个相同的Bonjour广告。完全重复了早期的Bonjour代码广告66661。
似乎没有问题,实际上,确实在批量iOS应用上运行完美,没有投诉,崩溃等。但这很奇怪。
问题1,我相信技术说明QA1333 表明完成两个或更多此类Bonjour事件是完全可以的。任何人都知道这一点,这是正确的,是不是已经解决了这个问题?
问题2,为什么第一个Bonjour广告会停止工作 - 有时是,有时没有 - 在你创建另一个广告的情况下?
有没有人见过这个?有任何想法吗?欢呼声。
来自Kevin的建议:是的,我们使用Bonjour Browser和众多设备/ Mac等工具彻底测试。
根据Jarrod的建议:是的,当它停止/消失时,它会“停止所有客户”。我想我实际上不知道如何以编程方式(在服务器上)判断它是否“未注册”。
答案 0 :(得分:4)
尝试从LAN上的任何Mac运行终端中的dns-sd -B _blah._tcp. .
。这将打开该服务的查询,您可以观看添加和删除事件。这是验证您的服务是否被明确注销的好方法,而不是(仅作为示例)一旦新客户端在事后开始收听就不能正常广播。
答案 1 :(得分:0)
Bonjour是多播UDP,根据定义,UDP是不可靠的。消息可以而且确实会丢失。
您无法明确该服务是否已取消注册,或者该服务似乎不存在。这将需要一些调试和多个客户端来查看服务是否实际上完全停止响应所有客户端的所有请求或只是一些,或者注册服务器上的某些内容由于错误的TTL或其他配置或逻辑错误而导致服务发布被终止