GB28181学习(九)——校时

要求

  • 联网内设备支持基于SIP方式或NTP方式的网络校时功能,标准时间为北京时间;
  • 系统运行时可根据配置使用具体校时方式;

流程

  • SIP校时在注册过程中完成,流程同注册和注销流程;
  • 在注册成功情况下,注册流程的最后一个SIP应答消息200 OK中的Date头域中携带时间信息,格式为"Date:yyyy-MM-ddTHH:mm:ss.SSS";
  • 当SIP代理通过注册方式校时,其注册过期时间宜设置为小于SIP代理与SIP服务器之间出现1s误差所经过的运行时间;

抓包

# 1.请求注册
REGISTER sip:xxx@192.168.0.107:5060 SIP/2.0
...# 2.返回401未认证
SIP/2.0 401 Unauthorized
...# 3.携带认证信息再次请求注册
REGISTER sip:xxx@192.168.0.107:5060 SIP/2.0
Authorization: Digest username="xxx", realm="xxx", nonce="xx", uri="sip:xxx@192.168.0.107:5060", response="xxx", algorithm=MD5, opaque="xx"
...# 返回注册成功 携带“Date: 2023-10-19T10:23:03”
SIP/2.0 200 OK
...
Date: 2023-10-19T10:23:03 
Content-Length:  0

代码

void CMySipContext::Response(pjsip_rx_data* rdata, int st_code, int headType)
{pjsip_tx_data* tdata = nullptr;pj_status_t status = pjsip_endpt_create_response(m_endPoint, rdata, st_code, nullptr, &tdata);if (PJ_SUCCESS != status)return;std::string date = "";pj_str_t c;pj_str_t key;pjsip_hdr* hdr = nullptr;std::stringstream ss;time_t t;switch (headType){case DateHead:key = pj_str((char*)"Date");t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());ss << std::put_time(std::localtime(&t), "%FT%T");date = ss.str();hdr = reinterpret_cast<pjsip_hdr*>(pjsip_date_hdr_create(m_pool, &key, pj_cstr(&c, date.c_str())));pjsip_msg_add_hdr(tdata->msg, hdr);break;// ... default:break;}// ...
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连续/离散的控制系统阶跃测试(包括MATLAB里的step()函数)

阶跃测试 只要是连续时间系统&#xff0c;无论是传递函数还是连续状态空间形式的模型&#xff0c;直接可以用**step()**做阶跃测试&#xff1b;但是对于离散系统而言&#xff0c;不能用step()函数&#xff0c;可以自行编写代码&#xff0c;如下。 1、离散系统&#xff1a;x(k…

leetcode_260. 只出现一次的数字 III

题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 解法一&#xff1a;哈希表 typedef struct {int key;UT_hash_handle hh; } HASH_MAP_S;HASH_MAP_S *usrs NULL;int* singleNumber(int* nums, int numsSize, int* returnSize) …

Selenium:Web自动化框架

Selenium自动化入门 1、Selenium概述2、Selenium环境搭建3、Selenium基本操作4、网页元素定位5、操作Cookie6、标签页管理 1、Selenium概述 Selenium&#xff08;Web Browser Automation&#xff09;的初衷是Web应用自动化测试。Selenium广泛应用于爬虫&#xff0c;爬虫需要让浏…

短视频矩阵系统源码---开发

一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统&#xff0c;目前是全国源头独立开发)&#xff0c;开发功能大拆解分享&#xff0c;功能大拆解&#xff1a; 7大模型剪辑法&#xff08;数学阶乘&#x…

idea 里 没有svn选项的处理办法

总结一下没有svn选项的几种情况&#xff1a; 情况1&#xff1a;IntelliJ IDEA打开带SVN信息的项目不显示SVN信息&#xff0c;项目右键SVN以及图标还有Changes都不显示解决方法 在VCS菜单中有个开关&#xff0c;叫Enabled Version Control Integration&#xff0c;在打开的窗口…

13JVM进阶

JVM内存模型 1、线程私有的数据区 1)、程序计数器 我们知道&#xff0c;线程是CPU调度的基本单位。在多线程情况下&#xff0c;当线程数超过CPU数量或CPU内核数量时&#xff0c;线程之间就要根据 时间片轮询抢夺CPU时间资源。也就是说&#xff0c;在任何一个确定的时刻&#…

掌握 Go 的计时器

简介 定时器是任何编程语言的重要工具&#xff0c;它允许开发人员在特定时间间隔安排任务或执行代码。在 Go 中&#xff0c;定时器是通过 time 包实现的&#xff0c;该包提供了一系列功能来创建、启动、停止和有效处理定时器。我们将探索 Go 中定时器的强大功能&#xff0c;并…

axios发送常见请求方式以及拦截器的封装

一&#xff0c;常见请求 //1.get--传递paramsaxios.get("/test",{params:{}})//2.post--传递paramsaxios.post("/test",{},{params:{}}) //3.post--传递bodyaxios.post("/test",{name:""}) 二&#xff0c;封装请求拦截器 import ax…

[AutoSAR系列] 1.2 AutoSar 综述

AutoSAR是一种汽车工业领域的标准化软件架构,旨在简化不同汽车制造商之间的软件开发和交互。该标准于2003年由一系列欧洲汽车制造商成立的AutoSAR联盟制定并发布,目前已经成为全球范围内的标准。下面将对AutoSAR的概念、架构和实现进行综述。 1. 概述 AutoSAR是汽车电子控制…

全球3小时气象数据集GLDAS Noah Land Surface Model L4 3 hourly 0.25 x 0.25 degree V2.1

简介 全球3小时气象数据集&#xff08;GLDAS Noah Land Surface Model L4 3 hourly 0.25 x 0.25 degree V2.1&#xff0c;简称GLDAS_NOAH025_3H 2.1&#xff09;&#xff0c;时空分辨率分别为3小时、0.25度。该数据产品于2020年1月重新处理&#xff0c;代替之前版本。前言 – …

npm ERR! exited with error code: 128

1.遇到的问题 报错信息&#xff1a;npm ERR! E:\tools\Gitt\Git\cmd\git.EXE ls-remote -h -t https://github.com/nhn/raphael.git npm ERR! npm ERR! fatal: unable to access https://github.com/nhn/raphael.git/: OpenSSL SSL_read: Connection was reset, errno 10054 …

Python-嗨格式 之音频转换,ncm转mp3

缘由&#xff1a;本想下载一些歌到车机播放&#xff0c;发现大部分是ncm格式的。 查了下才知道是音乐软件限制了&#xff0c;会员下载的音频文件为.ncm格式&#xff0c;目前只能在网易云音乐APP上播放&#xff0c;不支持在其他音频播放软件或音频设备使用。 百度转换软件&…

vscode使用CSScomb插件

1. 安装 在设置中搜索csscomb&#xff0c;把Csscomb: Format On Save勾上 然后去edit in settings.json配置 2.使用 2.1 用官网提供的三种方法 https://github.com/csscomb/csscomb.js/tree/master/config 2.2 自定义 CSS 书写顺序规则可以参考这个荐腾讯 AollyTeam 团队的…

【六:(mock数据)spring boot+mybatis+yml】

目录 1.1、代码编写Demo类User类启动类 APplication 1.2、配置类查询语句的配置 mysql.ymlspringboot的配置 application.yml日志的配置 logback.xml数据库的配置 mybatis-config.xml 1.3、测试&#xff1a;1.3.1、测试获取用户数1.3.2、添加用户1.3.3、数据的更新1.3.4、数据的…

阿里云今年有双十一活动吗?不好说

阿里云今年有双十一活动吗&#xff1f;不好说&#xff0c;因为去年就没有。阿里云双11优惠活动是一项大型的促销活动&#xff0c;每年都有&#xff0c;但是去年没有双十一活动&#xff0c;不知道今年2023年阿里云是否有双11优惠活动。但是阿里云百科aliyunbaike.com猜想&#x…

uni-app:js二维数组与对象数组之间的转换

一、二维数组整理成对象数组 效果 [ ["前绿箭","DI10","RO1"], ["前红叉","DI2","RO2"], ["后绿箭","DI12","RO3"], ["后红叉","DI4","RO6"] ] …

ES6 Generator 函数

Generator 函数是 ES6 提供的一种异步编程解决方案&#xff0c;语法行为与传统函数完全不同。 形式上&#xff0c;Generator 函数是一个普通函数&#xff0c;但是有两个特征。一是&#xff0c;function关键字与函数名之间有一个星号&#xff1b;二是&#xff0c;函数体内部使用…

STM32基于HAL库RT-Thread Demo测试

STM32基于HAL库RT-Thread Demo测试 &#x1f388;源码地址&#xff1a;https://github.com/RT-Thread/rt-thread/tree/master&#x1f4cc;基于STM32CUBEMX中间件安装《基于 CubeMX 移植 RT-Thread Nano》&#x1f4cd;环境搭建《使用 Env 创建 RT-Thread 项目工程》&#x1f5…

操作系统知识点学习

操作系统 一、什么是操作系统&#xff1f;请简要概述一下 操作系统是管理计算机硬件和软件资源的计算机程序&#xff0c;提供一个计算机用户与计算机硬件系统之间的接口。向上对用户程序提供接口&#xff0c;向下接管硬件资源。操作系统本质上也是一个软件&#xff0c;作为最接…

ChessGPT:免费好用的国际象棋对弈AI机器人

对于国际象棋初学者&#xff0c;需要找一个对手来练棋。ChessGPT&#xff0c;就是一个免费好用的AI对弈机器人&#xff0c;非常适合新手来提升&#xff0c;是一个很好的练习伙伴。网站地址是&#xff1a;https://www.chess.com/play/computer&#xff0c;也有手机版app&#xf…