我正在使用Cling Java库来实现一个UPnP控制点。
原生controlpoint.search()函数是非阻塞的,它通过回调机制报告设备。
有没有一种方法可以阻塞调用search,当找到设备时它会返回?或者一个状态标志,我可以在上面等待,直到找到设备?
(我自己实现这个功能很简单,但我希望尽可能多地使用原生API )
发布于 2012-11-01 16:54:52
即使API允许(它不允许),这样做也是非常不明智的。UPnP中的设备发现(也称为搜索)本质上是异步的。搜索从广播开始,作为控制点的您无法知道设备何时会响应,会有多少响应,以及是否有响应。在UPnP发现中没有这样的事件,比如“现在我找到了所有的设备,不会再有了”--这正是你需要的,以便实现可靠的阻塞等待。最好的折衷方案是使用超时的阻塞等待--但是您会设置什么超时呢?太短意味着某些设备可能无法及时响应(您自己决定的时间),太长意味着即使没有更多的设备要响应,您仍将等待-但由于UPnP ad-hoc网络的设计,您根本无法知道有多少设备在那里。
你可能需要解释为什么拦截搜索对你如此重要。
https://stackoverflow.com/questions/13171388
复制相似问题