Skip to content

Instantly share code, notes, and snippets.

@waitman
Created February 15, 2015 17:38
Show Gist options
  • Save waitman/ec3c50e9ab5ef7e22a91 to your computer and use it in GitHub Desktop.
Save waitman/ec3c50e9ab5ef7e22a91 to your computer and use it in GitHub Desktop.
query.tcl
package require udp
set count 0
# A SSDP multicast demo.
proc udpEvent {chan} {
global count
set data [read $chan]
set peer [fconfigure $chan -peer]
puts "=================== $count ========================="
set count [expr $count + 1]
puts "$peer [string length $data] $data"
return
}
set group 239.255.255.250
set port 1900
global s
set s [udp_open $port]
fconfigure $s -buffering none -blocking 0
fconfigure $s -mcastadd $group -remote [list $group $port]
fileevent $s readable [list udpEvent $s]
puts -nonewline $s "M-SEARCH * HTTP/1.1\r\nMX: 3\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nST: upnp:rootdevice\r\n\r\n"
#puts -nonewline $s "M-SEARCH * HTTP/1.1\r\nMX: 3\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nST: ssdp:all\r\n\r\n"
set ::forever 0
vwait ::forever
@waitman
Copy link
Author

waitman commented Feb 15, 2015

example run:

## tclsh8.6 query.tcl 
=================== 0 =========================
192.168.0.166 1900 95 M-SEARCH * HTTP/1.1
MX: 3
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
ST: upnp:rootdevice


=================== 1 =========================
192.168.0.166 1900 0 
=================== 2 =========================
192.168.0.2 1900 260 HTTP/1.1 200 OK
Cache-Control: max-age=600
Date: Sun, 15 Feb 2015 18:20:15 GMT
Ext: 
Location: http://192.168.0.2:1990/WFADevice.xml
Server: POSIX UPnP/1.0 UPnP Stack/1.9.0.0
ST: upnp:rootdevice
USN: uuid:ac73d098-9183-8593-67ab-5ee269f1b13a::upnp:rootdevice


=================== 3 =========================
192.168.0.2 1900 0 
=================== 4 =========================
192.168.0.1 1900 242 HTTP/1.1 200 OK
ST: upnp:rootdevice
LOCATION: http://192.168.0.1:5000/Public_UPNP_gatedesc.xml
SERVER: Linux/2.6.12, UPnP/1.0, NETGEAR-UPNP/1.0
EXT:
CACHE-CONTROL: max-age=3600
USN: uuid:047e7fda-486c-ac37-3a99-9fe038b093b7::upnp:rootdevice


=================== 5 =========================
192.168.0.1 1900 0 
=================== 6 =========================
192.168.0.1 1900 266 HTTP/1.1 200 OK
Cache-Control: max-age=600
Date: Sun, 15 Feb 2015 18:20:18 GMT
Ext: 
Location: http://192.168.0.1:1990/WFADevice.xml
Server: POSIX UPnP/1.0 UPnP Stack/6.30.163.2002
ST: upnp:rootdevice
USN: uuid:c7a4408d-0dd2-b722-78b7-a2f93422df13::upnp:rootdevice


=================== 7 =========================
192.168.0.1 1900 0 
=================== 8 =========================
192.168.0.1 1900 292 HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1790
DATE: Sun, 15 Feb 2015 18:20:18 GMT
ST: upnp:rootdevice
USN: uuid:4d696e69-444c-164e-9d41-e4f4c60652f0::upnp:rootdevice
EXT:
SERVER: Linux 2.6 DLNADOC/1.50 UPnP/1.0 ReadyDLNA/1.0.26
LOCATION: http://192.168.0.1:8200/rootDesc.xml
Content-Length: 0


=================== 9 =========================
192.168.0.1 1900 0 
=================== 10 =========================
192.168.0.27 50201 256 HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Sun, 15 Feb 2015 18:20:18 GMT
EXT: 
LOCATION: http://192.168.0.27:50201/dial.xml
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
ST: upnp:rootdevice
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::upnp:rootdevice


=================== 11 =========================
192.168.0.27 50201 0 
=================== 12 =========================
192.168.0.29 1900 207 HTTP/1.1 200 OK
Cache-Control: max-age=3600
ST: upnp:rootdevice
USN: uuid:01093089-9400-1098-8011-cc6da0ba73e7::upnp:rootdevice
Ext: 
Server: Roku UPnP/1.0 MiniUPnPd/1.4
LOCATION: http://192.168.0.29:8060/


=================== 13 =========================
192.168.0.29 1900 0 
=================== 14 =========================
192.168.0.4 1900 381 HTTP/1.1 200 OK
ST:upnp:rootdevice
USN:uuid:3ebdefdd-25e9-4d44-8bed-9e372a6e66dc::upnp:rootdevice
Location:http://192.168.0.4:2869/upnphost/udhisapi.dll?content=uuid:3ebdefdd-25e9-4d44-8bed-9e372a6e66dc
OPT:"http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS:baab7caf9eabb5750ed744dc6ddead93
Cache-Control:max-age=900
Server:Microsoft-Windows/6.3 UPnP/1.0 UPnP-Device-Host/1.0
Ext:


=================== 15 =========================
192.168.0.4 1900 0 
=================== 16 =========================
192.168.0.7 1900 206 HTTP/1.1 200 OK
Cache-Control: max-age=3600
ST: upnp:rootdevice
USN: uuid:4b304131-3257-1313-0000-0301ae040000::upnp:rootdevice
Ext: 
Server: Roku UPnP/1.0 MiniUPnPd/1.4
Location: http://192.168.0.7:8060/


=================== 17 =========================
192.168.0.7 1900 0 
=================== 18 =========================
192.168.0.12 63825 167 M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
USER-AGENT: Google Chrome/40.0.2214.111 Windows


=================== 19 =========================
192.168.0.12 63825 0 
=================== 20 =========================
192.168.0.12 63825 167 M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
USER-AGENT: Google Chrome/40.0.2214.111 Windows


=================== 21 =========================
192.168.0.12 63825 0 
=================== 22 =========================
192.168.0.12 63825 167 M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
USER-AGENT: Google Chrome/40.0.2214.111 Windows


=================== 23 =========================
192.168.0.12 63825 0 
=================== 24 =========================
192.168.0.12 63825 167 M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
USER-AGENT: Google Chrome/40.0.2214.111 Windows


=================== 25 =========================
192.168.0.12 63825 0 
=================== 26 =========================
192.168.0.27 50201 259 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: upnp:rootdevice
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::upnp:rootdevice


=================== 27 =========================
192.168.0.27 50201 0 
=================== 28 =========================
192.168.0.27 50201 268 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: uuid:00000004-0000-1010-8000-fcf15285d4f8
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8


=================== 29 =========================
192.168.0.27 50201 0 
=================== 30 =========================
192.168.0.27 50201 299 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: urn:schemas-upnp-org:device:Basic:1
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::urn:schemas-upnp-org:device:Basic:1


=================== 31 =========================
192.168.0.27 50201 0 
=================== 32 =========================
192.168.0.27 50201 307 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: urn:dial-multiscreen-org:service:dial:1
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::urn:dial-multiscreen-org:service:dial:1


=================== 33 =========================
192.168.0.27 50201 0 
=================== 34 =========================
192.168.0.27 50201 259 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: upnp:rootdevice
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::upnp:rootdevice


=================== 35 =========================
192.168.0.27 50201 0 
=================== 36 =========================
192.168.0.27 50201 268 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: uuid:00000004-0000-1010-8000-fcf15285d4f8
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8


=================== 37 =========================
192.168.0.27 50201 0 
=================== 38 =========================
192.168.0.27 50201 299 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: urn:schemas-upnp-org:device:Basic:1
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::urn:schemas-upnp-org:device:Basic:1


=================== 39 =========================
192.168.0.27 50201 0 
=================== 40 =========================
192.168.0.27 50201 307 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: urn:dial-multiscreen-org:service:dial:1
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::urn:dial-multiscreen-org:service:dial:1


=================== 41 =========================
192.168.0.27 50201 0 
=================== 42 =========================
192.168.0.27 50201 259 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: upnp:rootdevice
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::upnp:rootdevice


=================== 43 =========================
192.168.0.27 50201 0 
=================== 44 =========================
192.168.0.27 50201 268 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: uuid:00000004-0000-1010-8000-fcf15285d4f8
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8


=================== 45 =========================
192.168.0.27 50201 0 
=================== 46 =========================
192.168.0.27 50201 299 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: urn:schemas-upnp-org:device:Basic:1
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::urn:schemas-upnp-org:device:Basic:1


=================== 47 =========================
192.168.0.27 50201 0 
=================== 48 =========================
192.168.0.27 50201 307 NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.0.27:50201/dial.xml
NT: urn:dial-multiscreen-org:service:dial:1
NTS: ssdp:alive
SERVER: Linux/2.6 UPnP/1.0 Sony-BDP/2.0
USN: uuid:00000004-0000-1010-8000-fcf15285d4f8::urn:dial-multiscreen-org:service:dial:1


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment