GB28181学习(九)——校时

news/2025/3/22 11:23:45/

要求

  • 联网内设备支持基于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.ppmy.cn/news/1167208.html

相关文章

【Android知识笔记】RecyclerView专题

RecyclerView工作流程 RecyclerView 的使用方法简单回顾: // 1. 添加gradle依赖 implementation androidx.recyclerview:recyclerview:1.1.0// 2. 布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http:…

做一个最新版的淘宝客返利程序源码有多难?

我们都知道淘宝客返利程序成为了很多人的创业和赚钱的工具。这种程序允许通过推广淘宝商品来获得佣金。然而&#xff0c;你知道构建这样一个淘宝客返利程序有多难吗&#xff1f;今天我们就从最基本的API说起&#xff0c;现在我将介绍构建一个最新版淘宝客返利程序所需的关键API…

Kotlin类的定义、构造函数、封装、继承和多态

Kotlin是一门面向对象的编程语言&#xff0c;它支持类的定义、构造函数、封装、继承和多态&#xff0c;这些是面向对象编程的核心概念。在下面的示例中&#xff0c;我们将通过代码来说明这些概念。 类的定义和成员访问 在Kotlin中&#xff0c;使用关键字class来定义一个类。类…

用 Python 这样去创建词云不是更美嘛?

什么是词云&#xff1f;在网络上我们经常可以看到一张图片&#xff0c;上面有一大堆大小不一的文字&#xff0c;这便是词云。词云一般是根据输入的大量词语生成的&#xff0c;如果某个词语出现的次数越多&#xff0c;那么相应的大小就会越大。 Python 中有一个专门用来生成词云…

Rust错误处理

返回值和错误处理 panic 深入剖析 主动调用 fn main() {panic!("crash and burn"); }backtrace 栈展开 panic 时的两种终止方式 当出现 panic! 时&#xff0c;程序提供了两种方式来处理终止流程&#xff1a;栈展开和直接终止 何时该使用 panic! 先来一点背景知…

微信小程序文本横向无缝滚动

背景&#xff1a; 微信小程序中列表宽度不够长&#xff0c;其中某字段显示不完整&#xff0c;因此要使其自动滚动。 &#xff08;最初看网上很多用定时器实现&#xff0c;但他们的案例中都只是一个横幅、用定时器也无所谓。但是我的需求中是一个上下无限滚动的列表&#xff0c;…

SpringBoot(二)集成 Quartz:2.5.4

Quartz是一个广泛使用的开源任务调度框架&#xff0c;用于在Java应用程序中执行定时任务和周期性任务。它提供了强大的调度功能&#xff0c;允许您计划、管理和执行各种任务&#xff0c;从简单的任务到复杂的任务。 以下是Quartz的一些关键特点和功能&#xff1a; 灵活的调度器…

支持录音的笔记APP,可将录音转化为文字的笔记软件

提及笔记APP工具&#xff0c;无外乎是电子笔记和手写笔记&#xff0c;现如今随着科技的不断发展&#xff0c;人们使用电子设备的频率是越来越多&#xff0c;在选择笔记APP时&#xff0c;大家不想再单纯的依靠手动输入文字记录&#xff0c;反而更多的是喜欢快捷的录音添加笔记的…