upnp协议
使用udp发送搜索广播请求
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900 # 固定地址和端口,广播
MAN: "ssdp:discover"
MX: 3
ST: ssdp:all # 设备类型,这里选择所有. Search Target缩写,用于请求中
upnp搜索响应
# 公司里的TCL电视机
HOST: 239.255.255.250:1900 CACHE-CONTROL: max-age=66 LOCATION: http://192.168.40.70:49152/description.xml OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01 01-NLS: 668792f0-1dd2-11b2-a401-fb0f9a8a7d29 NT: urn:schemas-upnp-org:service:RenderingControl:1 # Notification Type,表示设备或服务的类型
NTS: ssdp:alive
SERVER: Linux/4.9.113 HTTP/1.0 X-User-Agent: redsonic USN: uuid:4149b0d2-d339-de03-f814-f40116f02d93::urn:schemas-upnp-org:service:RenderingControl:1
# USN: USN(Unique Service Name)字段用于唯一标识网络中的设备和服务。USN字段由设备的UUID和服务类型或设备类型组成,以便在网络中唯一标识一个设备及其服务。
# 上面这台设备是一台TCL的电视机,返回的响应有多条,NT的值不同,有“upnp:rootdevice”、“urn:schemas-upnp-org:service:ConnectionManager:1”、“urn:schemas-upnp-org:service:RenderingControl:1”, NT也可能是uuid,唯一标识符,这种情况下,NT字段表示的是设备的唯一实例,而不是设备或服务的类型。
# NTS: NTS 是 Notification Sub Type(通知子类型)的缩写。NTS字段用于标识SSDP(Simple Service Discovery Protocol)通知消息的具体类型,指示设备的当前状态变化。可选 ssdp:alive、ssdp:byebye、ssdp:update其中返回的结果中Location xml内容
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<presentationURL>/</presentationURL>
<friendlyName>TCL 65V2-PRO-5CF9(192.168.40.70)</friendlyName>
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>
<UDN>uuid:4149b0d2-d339-de03-f814-f40116f02d93</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<controlURL>_urn:schemas-upnp-org:service:AVTransport_control</controlURL>
<SCPDURL>_urn:schemas-upnp-org:service:AVTransport_scpd.xml</SCPDURL>
<eventSubURL>_urn:schemas-upnp-org:service:AVTransport_event</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<controlURL>_urn:schemas-upnp-org:service:RenderingControl_control</controlURL>
<SCPDURL>_urn:schemas-upnp-org:service:RenderingControl_scpd.xml</SCPDURL>
<eventSubURL>_urn:schemas-upnp-org:service:RenderingControl_event</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>_urn:schemas-upnp-org:service:ConnectionManager_scpd.xml</SCPDURL>
<controlURL>_urn:schemas-upnp-org:service:ConnectionManager_control</controlURL>
<eventSubURL>_urn:schemas-upnp-org:service:ConnectionManager_event</eventSubURL>
</service>
</serviceList>
<manufacturer>Microsoft Corporation</manufacturer>
<manufacturerURL>http://www.microsoft.com</manufacturerURL>
<modelDescription>Media Renderer</modelDescription>
<modelName>Windows Media Player</modelName>
<modelURL>http://go.microsoft.com/fwlink/?Linkld=105927</modelURL>
</device>
<URLBase>http://192.168.40.70:49152</URLBase>
</root>