关于SSDP

简介: SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。

SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。

SSDP有两种不同的类型:发现请求和存在通知。在本例中用到的只有发现请求(Discovery request 或查询请求)。SSDP客户端向此地址发送HTTP UDP 发现请求,查询某种类型的服务。SSDP服务在此地址上监听服务发现请求。当服务监听到的HTTP UDP 发现请求和它自己提供的服务匹配时,它以单播方式发送HTTP UDP 响应。

关于SSDP的应用

更新中...

ESP8266的实现

以下为基于SSDP协议实现的一个ESP8266的WebServer

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266SSDP.h>

const char* ssid = "<输入您的WIFI名称>";
const char* password = "<WIFI密码>";

ESP8266WebServer HTTP(80);

void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println("Starting WiFi...");

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if(WiFi.waitForConnectResult() == WL_CONNECTED){

    Serial.printf("Starting HTTP...\n");
    HTTP.on("/index.html", HTTP_GET, [](){
      HTTP.send(200, "text/plain", "Hello World!");
    });
    HTTP.on("/description.xml", HTTP_GET, [](){
      SSDP.schema(HTTP.client());
    });
    HTTP.begin();

    Serial.printf("Starting SSDP...\n");
    SSDP.setSchemaURL("description.xml");
    SSDP.setHTTPPort(80);
    SSDP.setName("Philips hue clone");
    SSDP.setSerialNumber("001788102201");
    SSDP.setURL("index.html");
    SSDP.setModelName("Philips hue bridge 2012");
    SSDP.setModelNumber("929000226503");
    SSDP.setModelURL("http://www.meethue.com");
    SSDP.setManufacturer("Royal Philips Electronics");
    SSDP.setManufacturerURL("http://www.philips.com");
    SSDP.begin();

    Serial.printf("Ready!\n");
  } else {
    Serial.printf("WiFi Failed\n");
    while(1) delay(100);
  }
}

void loop() {
  HTTP.handleClient();
  delay(1);
}

本文还在持续更新中,后续内容还敬请关注

相关文章
|
7月前
|
域名解析 网络协议
【计算机网络】DNS 分别在什么情况下使用 UDP 和 TCP?
【1月更文挑战第10天】【计算机网络】DNS 分别在什么情况下使用 UDP 和 TCP?
|
JSON 负载均衡 前端开发
一文带你详细了解Open API设计规范
一文带你详细了解Open API设计规范
3963 1
|
存储 Java 文件存储
ZooKeeper 避坑实践: SnapCount设置不合理导致磁盘爆满,服务不可用
本篇通过深入解读ZooKeeper 数据文件生成机制,以及ZooKeeper 中和数据文件生成相关的参数,探究一下 解决 ZooKeeper 磁盘问题的最佳实践。
ZooKeeper 避坑实践: SnapCount设置不合理导致磁盘爆满,服务不可用
|
7月前
|
运维 监控 安全
【亮剑】为网络工程师总结了Juniper设备的配置、监控和故障排除命令
【4月更文挑战第30天】本文为网络工程师总结了Juniper设备的配置、监控和故障排除命令。配置命令包括基础设置、路由协议、安全和系统服务;监控命令涉及系统状态、接口、流量及路由表;故障排除命令涵盖日志、接口、路由协议和安全方面的排查工具。掌握这些基本命令将提升网络运维效率。
236 2
|
存储 安全 大数据
数据隐私与安全在大数据时代的挑战与应对
数据隐私与安全在大数据时代的挑战与应对
1173 0
|
存储 机器学习/深度学习 传感器
数字图像处理(二) 数字图像处理基础(上)
数字图像处理(二) 数字图像处理基础(上)
184 0
|
开发框架 弹性计算 Cloud Native
第八届中国国际“互联网+”大学生创新创业大赛介绍
阿里云与你一起数字创新、永无止境!
3223 57
第八届中国国际“互联网+”大学生创新创业大赛介绍
|
存储 人工智能 供应链
“企业数字化转型”十大案例!
数字化浪潮正在席卷全球,践行数字化转型和提升企业的运营水平与竞争力,已经成为各国企业角力全球市场的重要议题。为此,很多国家政府都推出了鼓励和推动本国企业数字化转型的相关政策。在国内,旧的增长方式难以为继,企业面临迫切的转型压力,而以数字化转型驱动的业务转型,成为中国企业提高运营水平,迈向新增长模式的重要路径。
“企业数字化转型”十大案例!
|
Java Maven
Java - MR 读写 orc 之 NoSuchMethodError: hive.ql.exec.vector.VectorizedRowBatch.getMaxSize()
一.引言 上一篇文章提到了 Java map-reduce 如何单独读取 ORC 文件以及 RcFile 文件,在同一个 MR 任务下分别读取 RcFile 以及 ORC 文件时,报如下错误:java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch.getMaxSize()I。完整的异常栈如下: 2022-04-20 06:44:47,326 FATAL [main] org.apach.
228 0
Java - MR 读写 orc 之 NoSuchMethodError: hive.ql.exec.vector.VectorizedRowBatch.getMaxSize()