2016-08-17 95 views
0

我正在使用Cling庫編寫upnp應用程序。爲了得到我的服務/服務器,我做了這樣的事情。僅搜索我的服務

public void searchForServers() { 

    /* 
     do stuff.... 
    */ 

    // Search for new devices 
    getUpnpService().getControlPoint().search(new UDADeviceTypeHeader(new UDADeviceType("MyFantasticService"))); 
} 

我曾預計,登記處只應包含「MyFantasticService」的實例,但事實證明,很多不同的UPnP設備似乎接聽我的電話....

有我誤解的東西在這裏?似乎很清楚如何在手冊中做..

+0

僅僅因爲它是一個標準,不要指望它在每個設備上都能正確實現。我見過馬屎(正如我們在這裏所說的),在攝像頭上使用RTSP實現......所以如果你確定**你**按照你應該做的那樣做一切事情,那麼機會就是設備不會。在這種情況下再次檢查結果並消除誤報。無論如何,你不應該相信這種輸入。 – Fildor

+0

是的,我在那個方向思考。 –

+2

獲取_Lots_的不同回答表明您身邊存在問題。與所有UPnP一樣,我建議用wireshark或類似的方法檢查實際的網絡流量。確保電匯上的M-SEARCH消息正確無誤。 – jku

回答

0

添加了我自己的過濾器,讓只有有效的服務傳遞到註冊表。

0

「受限制」搜索意味着您希望匹配設備進行回答。但任何設備都可以隨時回答或實際上「被發現」,這就是UPnP的工作原理。理想情況下(在實踐中沒有設備製造商關心),限制搜索應該加速發現。如果您只想使用特定服務,請在RegistryListener中過濾deviceDiscovered等回調方法。