首页| 论坛| 消息

标题:Qt/C++开发监控GB28181系统/设备注册/设备注销/密码认证/心跳保活/校时
作者:liudianwu
日期:2025-04-27 09:45
内容:

## 一、前言
根据gb28181协议文档,第一步就是需要实现设备的注册,和onvif不同,gb是反过来的,设备端主动连接服务端,而onvif是服务端主动发出搜索,设备被动应答,包括后续的交互几乎都是被动应答,除了警情上报。gb这样定义协议有个巨大好处,就是跨网,服务器上的软件可以在公网上,然后设备这边主动去连接,后续的交互都是建立在这个连接上面的,通过心跳消息保持连接。在udp模式下,如果没有心跳保活,在外网环境中,设备端的端口可能会变,意味着服务端无法主动发消息给设备端。
根据协议文档,无论是注册还是注销,都需要密码认证,服务端这边有个密码,设备端那边也会传一个密码运算后的数据,然后根据指定的规则一般是md5加密,服务端收到这一串数据后,用密码运算后的字符和设备端传过来的字符比较是否一致,一致则说明密码正确。这里有个小技巧,不一定非要认证,有些厂家的设备可能没有做认证,所以服务端这边可以约定设置认证密码为空则表示跳过认证。
### 1.1 设备注册
```cpp
//注册请求:设备端-》服务端
REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.64:5060;rport;branch=z9hG4bK1945388331
From: ;tag=33226951
To:
Call-ID: 1455222403
CSeq: 1 REGISTER
Contact:
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0
//注册应答:服务端-》设备端
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.0.64:5060;rport;branch=z9hG4bK1945388331
From: ;tag=33226951
To:
Call-ID: 1455222403
CSeq: 1 REGISTER
User-Agent: wx_feiyangqingyun
Date: 2025-04-22T10:48:38.014
Content-Length: 0
WWW-Authenticate: Digest realm="3402000000", algorithm=md5, nonce="9485904448344456af5449b51759016e"
//鉴权注册:设备端-》服务端
REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.64:5060;rport;branch=z9hG4bK1494593151
From: ;tag=33226951
To:
Call-ID: 1455 ..

回复 发表
主题 版块