当前位置:

首页 > 软件教程 > GB28181协议是什么?是否收费?

GB28181协议是什么?是否收费?

在探讨GB28181协议的细节之前,让我们先了解一下与之相关的HTTP和SSDP协议的基本概念。这将帮助我们更好地理解GB28181协议的工作原理。1、HTTP协议与SSDP协议SSDP协议与HTTP协议在结构上非常相似,实际上,它们的相似之处主要在于协议内容的格式。然而,SSDP协议在使用时需要忽略端口和D类地址。当我向其他员工或面试者解释时,我总是强调深入理解HTTP协议的重要性,因为掌握了HTTP协议,理解SSDP协议就变得相对容易。许多人可能会认为HTTP协议仅仅是GET、POST、PUT、DEL

本文目录

    在探讨GB28181协议的细节之前,让我们先了解一下与之相关的HTTP和SSDP协议的基本概念。这将帮助我们更好地理解GB28181协议的工作原理。

    gb28181协议详解_GB28181收费吗

    1、HTTP协议与SSDP协议

    SSDP协议与HTTP协议在结构上非常相似,实际上,它们的相似之处主要在于协议内容的格式。然而,SSDP协议在使用时需要忽略端口和D类地址。

    当我向其他员工或面试者解释时,我总是强调深入理解HTTP协议的重要性,因为掌握了HTTP协议,理解SSDP协议就变得相对容易。许多人可能会认为HTTP协议仅仅是GET、POST、PUT、DELETE等方法,但这只是冰山一角。我常问的一个问题是:“HTTP协议如何知道它已经结束了?”

    大多数面试者对此问题回答得含糊不清,这确实令人惊讶。有些人会提到socket.close(),但实际上,关闭socket是因为你已经知道HTTP请求或响应已经结束,而不是因为关闭socket导致HTTP协议结束。HTTP协议内容部分的结束是由两个\r\n\r\n来标记的。对于二进制数据,则使用Content-Length字段来表示长度。

    现在,让我们看看SSDP协议的实际应用:

    static const char* ssdp_search = "M-SEARCH * HTTP/1.1\r\n"
                                     "HOST: 239.255.255.250:1900\r\n"
                                     "MAN: \"ssdp:discover\"\r\n"
                                     "MX: 5\r\n"
                                     "ST: ssdp:all\r\n\r\n";

    这段代码代表了搜索所有设备的请求。在D类IP地址239.255.255.250的1900端口发送这个字符串,你应该能收到很多设备的响应信息,例如摄像头信息。然而,如果这段代码无法搜索到任何设备,可能是因为格式不正确。正确的写法应包含行结束符\r\n,以及协议内容结束的标记\r\n\r\n。这样,你就能搜索到所有设备的信息。当然,你也可以通过过滤来只搜索特定类型的设备,如摄像头。

    2、发现谁在发现

    除了搜索设备,我们还需要知道谁向我们的服务地址发送了搜索请求。因为我们是一个设备,在GB28181服务中,我们需要知道SIP网守和网关设备,可能有多个这样的设备,我们需要知道谁正在尝试发现设备。以下是实现这个功能的代码示例:

    #include 
    #include 
    #include 
    #pragma comment(lib, "ws2_32.lib")
    

    int main_2(){ int iRet = 0; WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.129"); addr.sin_port = htons(1900); bool bOptval = true; iRet = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char)&bOptval, sizeof(bOptval)); if (iRet != 0) { printf("setsockopt fail:%d", WSAGetLastError()); return -1; } iRet = ::bind(sock, (sockaddr)&addr, sizeof(addr)); if (iRet != 0) { printf("bind fail:%d", WSAGetLastError()); return -1; } printf("socket:%d bind success\n", sock); // 加入组播 ip_mreq multiCast; multiCast.imr_interface.S_un.S_addr = inet_addr("192.168.0.129"); multiCast.imr_multiaddr.S_un.S_addr = inet_addr("239.255.255.250"); iRet = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char)&multiCast, sizeof(multiCast)); if (iRet != 0) { printf("setsockopt fail:%d", WSAGetLastError()); return -1; } printf("udp group start\n"); int len = sizeof(sockaddr); char strRecv[1500] = { 0 }; while (true){ memset(strRecv, 0, sizeof(strRecv)); iRet = recvfrom(sock, strRecv, sizeof(strRecv) - 1, 0, (sockaddr)&addr, &len); if (iRet > 0) { strRecv[iRet] = '\0'; printf("recv:%s\n", strRecv); } } closesocket(sock); WSACleanup(); return 0; }

    通过上述代码,我们可以监听并接收来自其他设备的SSDP搜索请求,从而了解哪些设备正在尝试发现我们的服务。这对于在GB28181协议环境中管理和协调设备通信至关重要。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    前端获取http状态码400的返回值实例
    前端获取http状态码400的返回值实例

    调用后端接口遇到400状态码时,仅捕获error.message无法获取具体错误信息。需在catch中通过error.response对象获取状态码、响应体及业务描述等详细数据,从而精准定位后端返回的业务错误。

    suse 10.3 安装http apche2时遇到的rpm依赖问题的解决方法
    suse 10.3 安装http apche2时遇到的rpm依赖问题的解决方法

    在SUSE 10.3中安装http apache2的依赖问题解决 在SUSE 10.3系统上安装Apache2时,很多人都会遇到一个典型的依赖错误。系统会明确提示你缺少几个关键的库文件,具体信息通常是这样: libapr1 >= 1.0 is needed by apache2-2.2.3-16.2

    Golang 测试 HTTP API 方法详解
    Golang 测试 HTTP API 方法详解

    使用httptest可高效测试GolangHTTPAPI。1.用NewRecorder模拟请求并检查状态码、响应体和头信息;2.测试路由和中间件时将ServeMux注入测试;3.用NewServer启动临时服务进行端到端验证。

    HTTP状态码大全及常见问题解析
    HTTP状态码大全及常见问题解析

    前言通过前面的总结,我们了解到,当客户端通过HTTP向服务端发送请求后,期望服务端能够作出响应。在服务端的响应中,信息头包含一个称为StatusCode的属性,其值是一个三位数字,我们称之为HTTP状态码。HTTP状态码是HTTP协议的重要组成部分,用来表示服务端对当前请求的响应状态。概念HTTP状态码(英语:HTTPStatusCode)是用来表示网页服务器HTTP协议响应状态的三位数字代码。它由RFC2616规范定义,并得到RFC2518、RFC2817、R

    WPF WrapPanel使用与布局技巧
    WPF WrapPanel使用与布局技巧

    大家好,又见面了,我是你们的朋友全栈君。WrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够是就会自动调整进行换行,后续排序按照从上至下或从右至左的顺序进行。Orientation——根据内容自动换行。当Horizontal选项看上去类似于Windows资源管理器的缩略图视图:元素是从左向右排列的,然后自上至下自动换行。Vertical选项看上去类似于Windows资源管理器的列表视图:元素是从上向下排列的,然后从左至右自动换行。ItemHeight——所有子元素

    红队渗透测试中的文件传输方法
    红队渗透测试中的文件传输方法

    在红队渗透测试中,常常需要最大限度地利用现有环境,绕过严密防守的系统防火墙、入侵检测系统(IDS)和入侵防御系统(IPS)等监控和报警系统进行文件传输。本文将介绍多种使用操作系统自带工具进行文件传输的技巧。搭建HTTP服务器使用Python对于Python2用户:python-mSimpleHTTPServer1337

    自定义计算公式实战入门指南
    自定义计算公式实战入门指南

    本系列开启了一个全新的项目,旨在实现用户通过自定义计算公式输入一系列值(固定格式,假设为文本格式),并自动生成一系列计算后的值。这些新值将被追加到原始文本中。核心在于用户无需编程即可通过提供的UI界面操作,操作一次生成程序,以后进行同类工作无需重复操作。本项目主要涉及的模块包括traitsui和traits。Part1:目标输入:如图所示,input1.txt文本中包含一系列数值。输出:经过程序处理后,生成output1.txt,新文件是在原始文件的基础上追加了一些值,追加值的数值取决于具体的公式。这里

    如何在 Golang 中处理 HTTP 异常?
    如何在 Golang 中处理 HTTP 异常?

    如何处理HTTP异常?在Golang中,HTTP异常处理包括以下方法:自定义HTTP错误处理程序:使用http.Error自定义错误响应。内置异常处理:使用recover()恢复异常,并使用errorHandler发送错误响应。实战案例:处理无效请求:根据请求方法发送错误响应。处理服务器内部错误:使用deferrecover()捕获异常并发送错误响应。处理其他异常:通过类似的方法进行处理。

    如何使用C++实现HTTP流传输?
    如何使用C++实现HTTP流传输?

    如何在C++中实现HTTP流传输?使用Boost.Asio和asiohttps客户端库创建SSL流套接字。连接到服务器并发送HTTP请求。接收HTTP响应头并打印它们。接收HTTP响应正文并打印它。

    在 Golang 中如何验证 HTTP 响应状态代码?
    在 Golang 中如何验证 HTTP 响应状态代码?

    在Golang中验证HTTP响应状态代码的方法有:使用http.Response.StatusCode,直接比较响应状态码与预期值。创建自定义错误类型,包含状态码和错误消息,并通过捕获错误来验证状态码。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。