2012-11-01 23 views
0

我正在使用Cling Java库来实现UPnP控制点。Cling UPnP:放置阻止呼叫以搜索设备

native controlpoint.search()函数是非阻塞的,并通过回调机制报告设备。

有没有办法阻止呼叫搜索,当找到设备时返回? 或者我可以等到设备被找到的状态标志?

(这是微不足道的实施这个我自己,但我想用本机API尽可能)

+0

对于一个通用的方法,看看http://stackoverflow.com/q/4639853/116509,但帕维尔的答案是重要的 – artbristol

回答

3

即使API将允许它(不),这将是非常不明智的事情。 UPnP中的设备发现(又名搜索)本质上是异步的。搜索以广播开始,您作为控制点无法知道设备何时响应,会有多少响应,以及是否有响应。在UPnP发现中没有这样的事件,因为“现在我发现所有设备,并且不会再有任何更多” - 这正是您需要具备的功能,才能实现可靠的阻止等待。最好的妥协可能是阻止等待超时 - 但是你会设置什么超时?太短意味着某些设备可能无法及时响应(您私下决定的时间),太长意味着即使没有更多设备可以响应,您仍然在等待 - 但由于设计了UPnP ad-hoc网络,您根本无法知道有多少设备在那里。

您可能需要解释为什么阻止式搜索对您来说如此重要。