2010-10-11 60 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