2010-10-11 33 views
2

J'écris le code pour qu'un périphérique UPnP s'annonce. Je n'ai aucun intérêt à pouvoir découvrir d'autres appareils UPnP sur le réseau. J'envoie les messages suivants (tirés de Wireshark)L'annonce UPnP s'éteint, mais le périphérique n'est pas détecté

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 

ET

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 

ET

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 

l'appareil ne découvrira pas (que ce soit sur la page Windows 7 où je vois mes autres appareils UPnP ou sur le périphérique Spy d'Intel pour les technologies UPnP - voir la mise à jour). J'ai 2 questions. Premièrement, tous ces messages sont-ils nécessaires? et deuxièmement, quelqu'un peut-il voir pourquoi mon appareil ne serait pas découvert?

autres informations:

mon fichier de description du dispositif 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>

et quelques informations de Wireshark (vue vers le bas un msgs liste d'images)
+ cadre + .....
Ethernet II, Src: mon appareil , Dst: 239.255.255.250
+ Protocole Internet, port Src: ssdp (1900), port Dst: ssdp (1900)
- Protocole de transfert hypertexte
... msgs d'en haut sont ici ...

MISE À JOUR: i PEUX voir l'appareil sur les services publics UPNP intel. c'était une erreur d'écrire ça. le périphérique fonctionnait sous un débogueur, et une fois redémarré sans débogueur, il l'a découvert dans les utilitaires. je ne peux toujours pas le voir sur Windows 7 cependant? Des pensées?

+1

Avez-vous comparé les données obtenues via wireshark pour les périphériques qui sont découverts? –

+0

ahh oui, bon point, j'ai oublié de le mentionner. J'ai, et la seule chose que je peux voir différemment est le truc qui devrait être différent (c'est-à-dire uuid, emplacement, etc). – trh178

Répondre

1

Il semble que SERVEUR: un en-tête nécessaire - - au moins un client avec lequel je jouais n'aimait pas les notifications sans SERVEUR:

+0

'SERVER:' est requis et doit contenir 'UPnP/1.x', par ex. 1.0 ou 1.1 pour que cette annonce 'ssdp' soit reconnue comme' upnp'. –

1

Pour une raison folle, j'ai eu plus de chance quand je mets ce champ pour avoir des espaces supplémentaires: CACHE-CONTROL: max-age = 900 \ r \ n