0

Cling Java ライブラリを使用して UPnP コントロール ポイントを実装しています。

ネイティブの controlpoint.search() 関数はノンブロッキングで、コールバック メカニズムを通じてデバイスを報告します。

デバイスが見つかったときに返される検索へのブロッキング呼び出しを行う方法はありますか? または、デバイスが見つかるまで待機できるステータス フラグはありますか?

(これを自分で実装するのは簡単ですが、ネイティブ API をできるだけ使用したいと考えています)

4

1 に答える 1

3

API がそれを許可する場合でも (許可しない場合)、それを行うのは非常に賢明ではありません。UPnP でのデバイス検出 (別名検索) は本質的に非同期です。検索はブロードキャストで始まり、コントロール ポイントとして、デバイスがいつ応答するか、デバイスがいくつあるか、存在するかどうかを知ることはできません。UPnP ディスカバリには、「すべてのデバイスが見つかりましたが、これ以上デバイスはありません」というようなイベントはありません。これは、信頼性の高いブロッキング待機のために必要なものです。最善の妥協案は、タイムアウトを使用して待機をブロックすることですが、どのタイムアウトを設定しますか? 短すぎると、一部のデバイスが時間内に応答しない可能性があることを意味します (個人的に決定した時間)。長すぎると、応答するデバイスがなくても待機することになります。単純にできる」

ブロッキング検索がなぜ重要なのかを説明する必要があるかもしれません。

于 2012-11-01T08:54:51.943 に答える