UPnP annonce sort, mais l'appareil n'a pas été découverte
-
29-09-2019 - |
Question
Je suis en train d'écrire un code pour un périphérique UPnP pour annoncer lui-même. Je n'ai aucun intérêt à ce pouvoir découvrir d'autres périphériques UPnP sur le réseau. J'envoie les messages suivants (tirés de Wireshark)
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
l'appareil ne découvrirez pas (que ce soit sur la victoire 7 page où je vois mes autres périphériques UPnP ou sur le périphérique d'Intel Spy pour UPnP Technologies - voir la mise à jour ). J'ai 2 questions. Tout d'abord, sont tous ces messages nécessaires? et d'autre part, peut-on voir pourquoi mon appareil ne serait pas découvert?
autre info:
mon fichier de description du périphérique 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 (une vue plongeante sur une liste de cadre msgs)
+ Cadre .....
II + Ethernet, Src: mon appareil , Dst: 239.255.255.250
+ Internet Protocol, Src Port: ssdp (1900), Dst Port: ssdp (1900)
- Protocole HyperText Transfer
... msgs d'en haut sont ici ...
MISE À JOUR: i CAN voir l'appareil sur les services publics UPNP intel. ce fut une erreur d'écriture qui. l'appareil a été exécuté sous un débogueur, et une fois redémarré sans débogueur, il ne découvrir dans les services publics. Je ne peux toujours pas voir sur Windows 7 si? toute pensée?
La solution
Il semble que SERVEUR: est un en-tête nécessaire - au moins un client, je jouais avec ne pas comme les notifications sans serveur:
Autres conseils
Pour une raison folle, j'ai eu plus de chance quand je mis ce champ pour avoir des espaces supplémentaires: CACHE-CONTROL: max-age = 900 \ r \ n