Java GRANG UPnP:为搜索设备放置阻塞调用

Java GRANG UPnP:为搜索设备放置阻塞调用,java,upnp,Java,Upnp,我正在使用Java库实现UPnP控制点 本机controlpoint.search()函数是非阻塞函数,通过回调机制报告设备 是否有一种方法可以对搜索进行阻塞调用,在找到设备时返回? 或者是一个状态标志,我可以在上面等待直到找到设备 (我自己实现这一点很简单,但我希望尽可能多地使用本机API)即使API允许(它不允许),这样做也是非常不明智的。UPnP中的设备发现(也称为搜索)本质上是异步的。搜索从广播开始,作为控制点的您无法知道设备何时响应,有多少响应,如果有的话。UPnP发现中没有“现在我找

我正在使用Java库实现UPnP控制点

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

是否有一种方法可以对搜索进行阻塞调用,在找到设备时返回? 或者是一个状态标志,我可以在上面等待直到找到设备


(我自己实现这一点很简单,但我希望尽可能多地使用本机API)

即使API允许(它不允许),这样做也是非常不明智的。UPnP中的设备发现(也称为搜索)本质上是异步的。搜索从广播开始,作为控制点的您无法知道设备何时响应,有多少响应,如果有的话。UPnP发现中没有“现在我找到了所有设备,不会再有了”这样的事件,这正是可靠阻塞等待所需要的。最好的折衷办法可能是阻塞等待并超时,但您会设置什么样的超时?太短意味着某些设备可能无法及时响应(您自行决定的时间),太长意味着即使没有更多设备响应,您仍将等待-但由于UPnP ad-hoc网络的设计,您根本不知道有多少设备


您可能需要解释为什么阻塞搜索对您如此重要。

即使API允许(它不允许),这样做也是非常不明智的。UPnP中的设备发现(也称为搜索)本质上是异步的。搜索从广播开始,作为控制点的您无法知道设备何时响应,有多少响应,如果有的话。UPnP发现中没有“现在我找到了所有设备,不会再有了”这样的事件,这正是可靠阻塞等待所需要的。最好的折衷办法可能是阻塞等待并超时,但您会设置什么样的超时?太短意味着某些设备可能无法及时响应(您自行决定的时间),太长意味着即使没有更多设备响应,您仍将等待-但由于UPnP ad-hoc网络的设计,您根本不知道有多少设备


您可能需要解释为什么阻塞搜索对您如此重要。

对于处理的一般方法,请看,但Pavel的答案很重要对于处理的一般方法,请看,但Pavel的答案很重要