2010-10-11 51 views
2

我正在爲UPnP設備編寫代碼來宣佈自己。我對它能夠發現網絡上的其他UPnP設備沒有興趣。我發送了以下消息(來自Wireshark的拍攝)UPnP宣佈熄滅,但設備未被發現

NOTIFY * HTTP/1.1\r\n 
NT: upnp:rootdevice\r\n 
USN: uuid:0000-1111-2222-3333::upnp:rootdevice\r\n 
NTS: ssdp:alive\r\n 
LOCATION: http://192.168.40.8:80/rdd2.xml\r\n 
HOST: 239.255.255.250:1900\r\n 
CACHE-CONTROL: max-age=900\r\n 
Content-Length: 0\r\n 
\r\n 

NOTIFY * HTTP/1.1\r\n 
NT: urn:schemas-upnp-org:device:BinaryLight:1\r\n 
USN: uuid:0000-1111-2222-3333::urn:schemas-upnp-org:device:BinaryLight:1\r\n 
NTS: ssdp:alive\r\n 
LOCATION: http://192.168.40.8:80/rdd2.xml\r\n 
HOST: 239.255.255.250:1900\r\n 
CACHE-CONTROL: max-age=900\r\n 
Content-Length: 0\r\n 
\r\n 

NOTIFY * HTTP/1.1\r\n 
NT: uuid:0000-1111-2222-3333\r\n 
USN: uuid:0000-1111-2222-3333\r\n 
NTS: ssdp:alive\r\n 
LOCATION: http://192.168.40.8:80/rdd2.xml\r\n 
HOST: 239.255.255.250:1900\r\n 
CACHE-CONTROL: max-age=900\r\n 
Content-Length: 0\r\n 
\r\n 

設備不會發現(或者是Win 7的網頁,我看到我的其他UPnP設備 或英特爾的設備間諜UPnP技術 - 請參閱更新)。我有2個問題。首先,這些消息都是必要的嗎?第二,任何人都可以看到爲什麼我的設備不會被發現?

其它信息:

我rdd2.xml設備描述文件

<?xml version="1.0"?>
<root>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>

<device>
<deviceType>urn:schemas-upnp-org:device:BinaryLight:1</deviceType>
<friendlyName>RFLC</friendlyName>
<manufacturer>Legrand</manufacturer>
<manufacturerURL>http://www.legrand.us/</manufacturerURL>
<modelDescription>Legrand Low Cost RF Lighting Control</modelDescription>
<modelName>X-10L1</modelName>
<modelNumber>L1</modelNumber>
<modelURL>http://www.legrand.us/</modelURL>
<serialNumber>0000001</serialNumber>
<UDN>uuid:0000-1111-2222-3333</UDN>
<UPC>00000-00001</UPC>
<presentationURL>pres.html</presentationURL>
</device>
</root>

和Wireshark的一些信息(視圖下一個封郵件幀列表)
+幀.....
+以太網II,源:我的設備 ,Dst:239.255.255.250
+ Internet協議,Src端口:ssdp(1900),Dst端口:ssdp(1900)
- 超文本傳輸​​協議
...從上面封郵件在這裏...

更新:我CAN看到英​​特爾的UPnP公用事業設備。寫這個是一個錯誤。該設備在調試器下運行,一旦沒有調試器重新啓動,它就會在實用程序中發現。雖然我仍然無法在Windows 7上看到它?有什麼想法嗎?

+1

您是否比較過通過wireshark獲得的發現設備的數據? – 2010-10-11 20:20:53

+0

啊,是的,好點,我忘了提及。我有,唯一能看到不同的是應該有所不同的東西(例如uuid,位置等)。 – trh178 2010-10-12 11:48:15

回答

1

看來,SERVER:是必需的頭 - - 至少有一個我玩過的客戶端不喜歡沒有服務器的通知:

+0

服務器:必須包含「UPnP/1.x」,例如1.0或1.1爲這個'ssdp'公告被識別爲'upnp'。 – 2015-04-14 09:33:24

1

對於一些瘋狂的原因,我有更好的運氣,當我把這個字段設置有多餘的空格: 緩存控制:最大年齡= 900 \ r \ n