PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Upnp, DLNA, SSDP,... Lister les périphériques du LAN
Upnp, DLNA, SSDP,... Lister les périphériques du LAN
Iniciado por jerome.langin, 05,may. 2019 15:12 - No hay respuesta
Publicado el 05,mayo 2019 - 15:12
Bonjour,

Je cherche à lister les périphériques réseau de mon LAN.

Actuellement j'ai lancé "arp -a" et récupéré les IP, puis NetNomMachine() sur chaque adresse.
2 soucis :
- NetNomMachine() est très long
- certaines adresses ne retournent rien (ex : ma freebox, mon player, les télephones IOS et Androïd,...

Je me penche donc sur l'Upnp pour allez chercher les infos.

J'ai essayé UpnpListePériphériques()

tabPériphériques est un tableau de upnpPériphérique
tabPériphériques = UPNPListePériphérique("ssdp:discover", 1900)
SI ErreurDétectée ALORS
Info(ErreurInfo(errComplet))
SINON
//Traitement
FIN


Mais en mettant un point d'arrêt au niveau du traitement je vois que tabPériphériques est vide.

C'est pourquoi je me suis penché sur le SSDP.
Si j'ai bien compris il faut que je me connecte en Socket à l'adresse IP cible, puis lui envoie un message.

Voila mon code :

MSEARCH est une chaîne = "M-SEARCH * HTTP/1.1"+RC+"Host: 239.255.255.250:1900"+RC+"Man: 'ssdp:discover'"+RC+"ST:upnp:rootdevice"+RC+"MX:3"
ChaîneVersUTF8(MSEARCH)
tabByte est tableau d'entiers sur 1 octet
POUR i = 1 _A_ Taille(MSEARCH)
TableauAjoute(tabByte,Asc(MSEARCH[[i]]))
FIN

SI SocketExiste("SSDP")=Faux ALORS
SI PAS SocketCréeUDP("SSDP", 1900, "192.168.0.254") ALORS
LIB_Resultat=ErreurInfo( errMessage )
SINON
LIB_Resultat="Socket Ouvert"
FIN
FIN

SI SocketExiste("SSDP") ALORS
SocketEcrit("SSDP",MSEARCH,"192.168.0.254", 1900)
LIB_Resultat = SocketLit("SSDP",Faux)
SI LIB_Resultat ALORS
Trace(LIB_Resultat)
FIN
FIN

SI SocketExiste("SSDP")=Vrai ALORS
SocketFerme("SSDP")
LIB_Resultat = "Socket fermé"
FIN


Malheureusement, aucun retour...
J'ai sûrement oublié ou mal compris un élément... qqun a-t'il une idée pour m'aider à avancer svp?

Merci d'avance !