Mozi.SSDP

基于 .NET 开发的 SSDP 服务组件
授权协议 MIT
开发语言 .NET
所属分类 服务器软件、 服务发现/注册和协调
软件类型 开源软件
地区 国产
投 递 者 华君浩
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Mozi.SSDP是一个基于.Net开发的SSDP服务组件,目标是为.Net应用程序提供完善的SSDP服务功能。项目对UDP Socket进行封装,并遵循UPNP/2.0(UPnP Device Architecture 2.0),实现了UPNP2.0规范中的大部分功能。

功能特性

  1. 发现-在线

    • 在线通知
    • 离线通知
    • 搜索
    • 更新
  2. 设备和服务描述

  3. 控制

  4. 事件

项目地址

程序下载

dotnet add package Mozi.SSDP --version 1.2.5

项目依赖

Mozi.HttpEmbedded > 1.2.5

版权说明

本项目采用MIT开源协议,引用请注明出处。欢迎复制,引用和修改。意见建议疑问请联系软件作者,或提交ISSUE。

用例说明

//开启SSDP服务
    var interfaces = NetworkInterface.GetAllNetworkInterfaces();
    foreach (var r in interfaces)
    {
        if (r.SupportsMulticast && r.NetworkInterfaceType != NetworkInterfaceType.Loopback)
        {
            foreach (var ip in r.GetIPProperties().UnicastAddresses)
            {
                if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    SSDPService ssdp = new SSDPService();
                    ssdp.PackDefaultSearch.ST = new TargetDesc()
                    {
                        Domain = ssdp.Domain,
                        ServiceType=ServiceCategory.Device,
                        ServiceName="simplehost",
                        Version=1
                    };
                    ssdp.MulticastAddress = "239.255.255.250";
                    ssdp.BindingAddress = ip.Address;
                    ssdp.OnNotifyAliveReceived += Ssdp_OnNotifyAliveReceived;
                    ssdp.OnSearchReceived += Ssdp_OnSearchReceived;
                    ssdp.OnNotifyByebyeReceived += Ssdp_OnNotifyByebyeReceived;
                    ssdp.OnNotifyUpdateReceived += Ssdp_OnNotifyUpdateReceived;
                    ssdp.OnResponseMessageReceived += Ssdp_OnResponseMessageReceived;
                    ssdp.AllowLoopbackMessage = true;
                    //初始化并加入多播组
                    ssdp.Activate();
                    //开始公告消息
                    ssdp.StartAdvertise();
                }
            }
        }
    }
  • 废话少说,直接上代码。服务端ssdp_server.py: # -*- coding: utf-8 -*- import socket SSDP_ADDR = '239.255.255.250' SSDP_PORT = 1900 SERVICE_NAME = 'my_service' class Connection(): def __init__(self, s, data, a

  • 前面一篇博客里面已经介绍过SSDP协议原理,本篇博客将实现实现Android上的SSDP协议。 关键技术分析:1、发送广播;需要发送送广播,所以需要使用MulticastSocket、SocketAddress、InetAddress,需要掌握。     2、SSDP数据报格式;标准的SSDP Server解析的时候对于分段的字段选用的特征码是"\r\n",需要特别注意。     3、访问权限;需

  • SSDP是一个“简单服务发现协议” ,即英文“Simple Service Discovery Protocol的缩写” , 该协议定义了如何在网络上发现网络服务的方法。SSDP也规定了存放在XML文件中的信息格式。SSDP信息的传送是依靠HTTPU和HTTPMU进行的。不论是控制点,或是UPnP设备,工作中都必然用到SSDP,设备接入网络之后,要利用它向网络广播自己的存在(广播的信息中还有设备位

  • 多线程运行代码如下 from scapy.all import * import random import threading class myThread (threading.Thread): def __init__(self,threadID,name,srcip,dstip): threading.Thread.__init__(self)

  • 前言:         之前有专文介绍了minidlna中的UPNP功能,内中介绍其中包含的SSDP(简单发现协议),SOAP(简单对象访问协议)等几个协议(http://blog.csdn.net/sakaue/article/details/19070735)。本文将根据minidlna的程序流程,概述SSDP的流程,为下一部分ACE实现做铺垫。 设备发现的大致流程:         首先,根

  • 1.提出需求   嵌入式设备开发过程中往往需要使用telnet或者ssh进行登陆调试,设备发布之后也需要再局域网内进行设备管理。此时就需要再局域网下搜索设备。 2.解决问题 2.1 串口   串口时最简单有效的方式,ifconfig查看IP地址即可,但千里马常有,串口不常有。 2.2 组播广播   设备绑定一个广播端口,等待广播包,缺点是协议不统一,需要自己制定协议编写代码。稳定性得不到保障 2.

  • 设备发现的大致流程:         首先,根据UPNP的规范:             在设备加入网络,UPnP发现协议允许设备向控制点广告它的服务。它使用向一个标准地址和端口多址传送发现消息来实现。控制点在此端口上侦听是否有新服务加入系统。为了通知所有设备,一个设备为每个其上的嵌入设备和服务发送一系列相应的发现消息。每个消息也包含它表征设备或服务的特定信息。 我们需要在服务(设备)开始时定时多

  • 前言: 之前有专文介绍了minidlna中的UPNP功能,内中介绍其中包含的SSDP(简单发现协议),SOAP(简单对象访问协议)等几个协议(http://blog.csdn.net/sakaue/article/details/19070735)。本文将根据minidlna的程序流程,概述SSDP的流程,为下一部分ACE实现做铺垫。 设备发现的大致流程: 首先,根据UPNP的规范: 在设备加入网

  • 在网上可能有很多说ssdp的文章, 我觉得比较多的是说一些比较文邹邹的东西,可能看的人云里雾里, 可能这就是大神的正常表现。或者贴出那种协议的东西。 我觉得我在考虑一个库的东西, 我会考虑它具体的功能和接口信息,还有在使用时的一些限制,和使用的时候的表现形态。这才是我在考虑一个是否使用的关键。我觉得对于一个软件开发人员来说,这才是需要知道东西。 1,功能 : 局域网发现, 2,局限是只能在同一个网

 相关资料
  • 本文向大家介绍详解.NET Core+Docker 开发微服务,包括了详解.NET Core+Docker 开发微服务的使用技巧和注意事项,需要的朋友参考一下 .NET Core发布很久了,因为近几年主要使用java,所以还没使用过.NET Core,今天正好有一个c#写的demo,需要做成服务,不想再转成java来实现,考虑使用.NET CORE来尝下鲜,目标是开发一个微服务,然后部署到Dock

  • MIP CLI 提供了调试服务器来方便组件开发者开发与调试组件。 启动调试服务器 对于官方组件(mip2-extensions)开发者,首先我们需要在命令行窗口 cd 到 mip2-extensions 的根目录下,通过如下命令启动调试服务器: mip2 dev -i 对于第三方站长组件(mip2-extensions-platform)开发者,需要 cd 到各自站点的目录下(sites/[站点名

  • 本文向大家介绍基于Vue开发数字输入框组件,包括了基于Vue开发数字输入框组件的使用技巧和注意事项,需要的朋友参考一下 随着 Vue 越来越火热, 相关组件库也非常多啦, 只用轮子怎么够, 还是要造起来!!! 1、概述 Vue组件开发的API:props、events和slots 2、组件代码 github地址:https://github.com/MengFangui/VueInputNumbe

  • braft并不能直接被任何client访问, 本文主要是说明一个能访问braft节点的client需要那些要素。 Example client side code of Counter 总体流程 要访问braft的主节点,需要做这么一些事情: 需要知道这个复制组有哪些节点, 这个可以通过配置列表,记录在dns,或者提供某些naming service如集群的master,redis, zookee

  • braft 本身并不提供server功能, 你可以将braft集成到包括brpc在内的任意编程框架中,本文主要是阐述如何在分布式Server中使用braft来构建高可用系统。具体业务如何实现一个Server,本文不在展开。 Example server-side code of Counter 注册并且启动Server braft需要运行在具体的brpc server里面你可以让braft和你的业

  • 主要内容:基于 xinetd 服务的启动,基于xientd 服务的自启动本节学习基于 xinetd 服务的管理方法。基于 xinetd 的服务同样有启动管理和自启动管理之分,而且不管是启动管理还是自启动管理,都只有一种方法,相比独立的服务简单一些。 基于 xinetd 服务的启动 基于 xinetd 的服务没有自己独立的启动脚本程序,是需要依赖 xinetd 的启动脚本来启动的。xinetd 本身是独立的服务,所以 xinetd 服务自己的启动方法和独立服务的启动方法