ssdp协议内容解析视频_固态硬盘的协议

ssdp协议内容解析视频_固态硬盘的协议SSDP协议内容解析

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

    SSDP(Simple Service Discovery Protocol),简单服务发现协议,用于发现局域网里面的设备和服务。

    SSDP消息分为设备查询消息、设备通知消息两种,通常情况下,使用更多地是设备查询消息。

    1、设备查询消息:

    格式例子如下:

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 5
ST: ssdp:all

    其中第一行是消息头,固定;HOST对应的是广播地址和端口,239.255.255.250是默认SSDP广播ip地址,1900是默认的SSDP端口;

    MAN后面的ssdp:discover为固定,MX为最长等待时间,ST:查询目标,它的值可以是:

upnp:rootdevice 仅搜索网络中的根设备 
uuid:device-UUID 查询UUID标识的设备 
urn:schemas-upnp-org:device:device-Type:version 查询device-Type字段指定的设备类型,设备类型和版本由UPNP组织定义。 
其中,第三种一般可以用来自定义设备,如:ST: urn:schemas-upnp-org:device:Server:1

    在设备接收到查询请求并且查询类型(ST字段值)与此设备匹配时,设备必须向多播地址239.255.255.250:1900回应响应消息。一般形如:

HTTP/1.1 200 OKCACHE-CONTROL: max-age = seconds until advertisement expiresDATE: when reponse was generatedEXT:LOCATION: URL for UPnP description for root deviceSERVER: OS/Version UPNP/1.0 product/versionST: search targetUSN: advertisement UUID

 

    最常用的设备发现就讲完了,不常用的设备通知和设备发现差别不大,主要是:

http头不同,设备通知的头为

NOTIFY * HTTP/1.1
无MX,增加:
NT	在此消息中,NT头必须为服务的服务类型。
NTS	表示通知消息的子类型,必须为ssdp:alive或者ssdp:byebye
USN	表示不同服务的统一服务名,它提供了一种标识出相同类型服务的能力
典型的设备通知消息格式如下:
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = seconds until advertisement expires
LOCATION: URL for UPnP description for root device
NT: search target
NTS: ssdp:alive
USN: advertisement UUID


下一章节将会讲述SSDP协议的Android实现,用于Android手机发现局域网里面的设备服务。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183060.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 跨平台应用开发进阶(十五) :uni-app 自定义 showToast并实现下载进度条

    跨平台应用开发进阶(十五) :uni-app 自定义 showToast并实现下载进度条大话设计模式(四)单例模式的优与劣前言首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,

    2022年6月20日
    258
  • java中Bigdecimal加减乘除运算

    java中Bigdecimal加减乘除运算在java中的Bigdecimal类型的数据进行加减乘除运算的时候要调用以下方法:加法:add减法:subtract乘法:multiply除法:divide例如: BigDecimali=newBigDecimal(2);BigDecimalj=newBigDecimal(1);//加法System.out.println(i.add(j));//减法System.out.println(i.subtract(j));

    2022年6月2日
    61
  • 电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]

    电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]一、产品简介QY-DG800D高性能电工电子电拖及自动化技术实训与考核装置是针对我国高等院校、职业技术教育的需求而开发的综合性实训考核装置。装置融合了电工、电子、电力拖动、PLC、变频器等实训内容,配备多块可自由组合的实训挂箱,适用各类职业院校、中专、技校电工、电子、电拖、机电一体化、自动化等专业的教学和从事相关专业的技术人员实训考核。二、产品特点装置实训屏上380V交流输出处设有单片机全程监控的一套过流保护装置,相间、线间直接短路或过载,电流超过设定值,系统即告警并切断总电源,确保设备安全.

    2022年6月6日
    38
  • C语言 continue「建议收藏」

    C语言 continue「建议收藏」C语言continue在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。案例#include<stdio.h>intmain(){

    2022年8月1日
    4
  • html导航栏自动调间距,HTML CSS导航栏间距[通俗易懂]

    html导航栏自动调间距,HTML CSS导航栏间距[通俗易懂]我做了一个CSS导航栏,但是在每个“navbar-item”之间,都有一点空间。我不希望那里有任何变化!有没有办法做到这一点,而不改变每个navbar-item的余裕?HTMLCSS导航栏间距Home-UnhandyFir9#wrapper{box-shadow:0px0px20px10pxblack;left:0px;top:0px;margin:auto;margin-…

    2022年5月27日
    101
  • 面试题:MyBatis二级缓存[通俗易懂]

    面试题:MyBatis二级缓存[通俗易懂]①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。②、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。写这篇文章的初衷:MyBatis二级缓存在实际工作中一般都不会使用,但是就有有些面试官一直问这个问题,所

    2025年12月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号