关于SIP server 的编程

C83267 2012-06-05 11:27:41
中星微有一款IPCamera_VS-IPC1032 的监控摄像头,是基于SIP的监控终端,我试图自已做一个SIP的服务器,来接收并发送认证命令给监控终端。我通过C#编写的程序可从5060端口收到以下REGISTER 信息:
REGISTER sip:vipcam.cn SIP/2.0
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-237030
To: <sip:00168e25f962@vipcam.cn>
From: <sip:00168e25f962@vipcam.cn>;tag=1325762736
Call-ID: dbd1aa03e8338ec4ff8847dbc6560888
CSeq: 1 REGISTER
Contact: <sip:00168e25f962@10.36.99.22:5060>
Expires: 120
User-Agent: Vimicro-SIPUA 2.9/1.1.5.78
Max-Forwards: 70
Content-Length: 0

但我试图发以下信息给监控终端时,客户终端无响应,只是重复发以上的REGISTER 信息:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-237030;received=10.36.99.22
Max-Forwards: 70
To: <sip:00168e25f962@10.36.99.21>;tag=349319959
From: <sip:00168e25f962@10.36.99.21>;tag=1325762736
Call-ID: dbd1aa03e8338ec4ff8847dbc6560888
CSeq: 1 REGISTER
Contact: <sip:00168e25f962@10.36.99.22:5060>
Content-Length: 0

按我的理解,如果我给监控终端发了确认信息,它收到后,应该会有下个动作,如INVITE等,可是没有,那么我的问题是:
1、怎么确认它是否收到?
2、格式是否正确?
...全文
1599 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwenwen 2012-12-14
  • 打赏
  • 举报
回复
找一个开源的SIP协议栈(比如oSIP)参考一下处理流程,可能会有启发。
君子梁 2012-09-17
  • 打赏
  • 举报
回复
时间:17:19:40发送信息如下:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44043;received=10.36.99.22
To: <sip:00168e25f92f@10.36.99.20>;tag=
From: <sip:00168e25f92f@10.36.99.20>;tag=351408521
Call-ID: 911c7161fb80582583f3105bec80a184
CSeq: 1 REGISTER
User-Agent: QinMin-PC
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Max-Foewards: 70
Contact: <sip:00168e25f92f@10.36.99.20>
Content-Length: 0
Expires: 120

首先这个地方, 在To: 这里缺少 一个tag 值, 需要填上值,来完成这个注册。


INVITE 中 主叫地址 和被叫地址是一样的? 自己呼叫自己,传输RTP流? 不晓得用户手册上是怎么讲的。只是感觉不对。

在第一个INVITE 出来后,你只回了100 Trying, 客户端继续再等待ACK,200OK。 但是没等到,超时又重发INVITE了, 但是服务器端这个用户还处于在呼叫状态, 这时候又收到一个INVITE, 就出了481 errer,感觉server端有问题, 至少server端流程也不对。
bluesen 2012-09-10
  • 打赏
  • 举报
回复
你应该找些标准看看,而不是瞎摸索。比如SIP协议的标准文档,视频监控的标准文档。
C83267 2012-09-07
  • 打赏
  • 举报
回复
我按bluesen说的那样回了一个401给它,它果然携带鉴权信息回过来,我不管认证是否正确,也不知如何认证了,回它一个200 OK。它发了一个SUBSCRIBE 给我,是两次SUBSCRIBE ,一次为Event: subtitle
一次为:Event: action。大致的收发过程如下,我想传我抓下的包上来,又不知道怎么传。
UDP服务器正在接收信息。。。
时间:17:19:40接收信息如下:
REGISTER sip:10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44040
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=351408521
Call-ID: 911c7161fb80582583f3105bec80a184
CSeq: 1 REGISTER
Contact: <sip:00168e25f92f@10.36.99.22:5060>
Expires: 120
User-Agent: Vimicro-SIPUA 2.9/1.1.5.78
Max-Forwards: 70
Content-Length: 0

---接收结束----
时间:17:19:40发送信息如下:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44040;received=10.36.99.22
To: <sip:00168e25f92f@10.36.99.20>;tag=351408521
From: <sip:00168e25f92f@10.36.99.20>;tag=QM40299412
Call-ID: 911c7161fb80582583f3105bec80a184
CSeq: 1 REGISTER
User-Agent: QinMin-PC
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Max-Forwards: 70
Contact: <sip:00168e25f92f@10.36.99.20>
WWW-Authenticate: Digest realm="10.36.99.20", nonce="00006df1"
Content-Length: 0

---发送结束----
时间:17:19:40接收信息如下:
SUBSCRIBE sip:event@10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44041
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=726598629
Call-ID: 89f5342fd0af42c82ca021f15f0a3324
CSeq: 1 SUBSCRIBE
Contact: <sip:00168e25f92f@10.36.99.20>
Expires: 300
Event: subtitle
Max-Forwards: 70
Content-Length: 0

---接收结束----
时间:17:19:40发送信息如下:
INVITE sip:00168e25f92f@10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.20:5060;branch=z9hG4bK
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=QM98223804
Call-ID: 89f5342fd0af42c82ca021f15f0a3324
CSeq: 2 INVITE
User-Agent: QinMin-PC
Contact: <sip:00168e25f92f@10.36.99.20>
Max-Forwards: 70
Content-Length: 0

---发送结束----
时间:17:19:40接收信息如下:
SUBSCRIBE sip:event@10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44042
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=1571131071
Call-ID: 0cd8873ac9257d6a1f8172fb0b826567
CSeq: 1 SUBSCRIBE
Contact: <sip:00168e25f92f@10.36.99.20>
Expires: 300
Event: action
Max-Forwards: 70
Content-Length: 0

---接收结束----
时间:17:19:40发送信息如下:
INVITE sip:00168e25f92f@10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.20:5060;branch=z9hG4bK
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=QM77785906
Call-ID: 0cd8873ac9257d6a1f8172fb0b826567
CSeq: 2 INVITE
User-Agent: QinMin-PC
Contact: <sip:00168e25f92f@10.36.99.20>
Max-Forwards: 70
Content-Length: 0

---发送结束----
时间:17:19:40接收信息如下:
REGISTER sip:10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44043
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=351408521
Call-ID: 911c7161fb80582583f3105bec80a184
CSeq: 1 REGISTER
Contact: <sip:00168e25f92f@10.36.99.22:5060>
Authorization: Digest realm="10.36.99.20",response="ae7ba7d9a420c12bb8a964815a09e68d"
Expires: 120
User-Agent: Vimicro-SIPUA 2.9/1.1.5.78
Max-Forwards: 70
Content-Length: 0

---接收结束----
时间:17:19:40发送信息如下:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.36.99.22:5060;branch=z9hG4bK-44043;received=10.36.99.22
To: <sip:00168e25f92f@10.36.99.20>;tag=
From: <sip:00168e25f92f@10.36.99.20>;tag=351408521
Call-ID: 911c7161fb80582583f3105bec80a184
CSeq: 1 REGISTER
User-Agent: QinMin-PC
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Max-Foewards: 70
Contact: <sip:00168e25f92f@10.36.99.20>
Content-Length: 0
Expires: 120

---发送结束----
时间:17:19:40接收信息如下:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.36.99.20:5060;branch=z9hG4bK
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=QM98223804
Call-ID: 89f5342fd0af42c82ca021f15f0a3324
CSeq: 2 INVITE
Content-Length: 0

---接收结束----
时间:17:19:40发送信息如下:
INVITE sip:00168e25f92f@10.36.99.20 SIP/2.0
Via: SIP/2.0/UDP 10.36.99.20:5060;branch=z9hG4bK
From: <sip:00168e25f92f@10.36.99.20>;tag=QM98223804
To: <sip:00168e25f92f@10.36.99.20>
Call-ID: 89f5342fd0af42c82ca021f15f0a3324
CSeq: 2 INVITE
User-Agent: QinMin-PC
Contact: <sip:00168e25f92f@10.36.99.20>
Content-Type: application/sdp
Max-Forwards: 69
Content-Length: 0

v=0
o=-0 0 IN IP4 10.36.99.20
s=session
c=IN IP4 10.36.99.20
t=0 0
m=video 5060 RTP/AVP 96
a=rtpmap:96 H264
a=framerate:15
c=IN IP4 10.36.99.20

---发送结束----
时间:17:19:40接收信息如下:
SIP/2.0 481 Call/Transaction Does Not Exist
Via: SIP/2.0/UDP 10.36.99.20:5060;branch=z9hG4bK
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=QM98223804
Call-ID: 89f5342fd0af42c82ca021f15f0a3324
CSeq: 2 INVITE
Content-Length: 0

---接收结束----
时间:17:19:40发送信息如下:
---发送结束----
时间:17:19:41接收信息如下:
SIP/2.0 481 Call/Transaction Does Not Exist
Via: SIP/2.0/UDP 10.36.99.20:5060;branch=z9hG4bK
To: <sip:00168e25f92f@10.36.99.20>
From: <sip:00168e25f92f@10.36.99.20>;tag=QM98223804
Call-ID: 89f5342fd0af42c82ca021f15f0a3324
CSeq: 2 INVITE
Content-Length: 0


bluesen 2012-07-01
  • 打赏
  • 举报
回复
那你要找到监控摄像头的手册,或者问一下厂家什么情况下能够触发
C83267 2012-06-28
  • 打赏
  • 举报
回复
谢谢bluesen,因这几天出差,未能及时回复,抱歉。
我按你说的给它回了SIP/2.0 401 Unauthorized 信息,它反馈的还是重复发REGISTER 信息,我从你的发贴《实现了一个Full Proxy SIP服务器》上下载了LxjSipServer,回应了200 OK后,它也没有下一步的动作,我只是想要它将RTP流发过来,似乎总不成功。
bluesen 2012-06-16
  • 打赏
  • 举报
回复
正确的注册交互过程一般还要进行鉴权,比如你给回401然后他会携带鉴权信息,你确认正确再回200 OK。

而且你的200响应包,没有Expires头字段,UAC就认为注册没有成功。
voip浩子 2012-06-13
  • 打赏
  • 举报
回复
用 asterisk

1,394

社区成员

发帖
与我相关
我的任务
社区描述
VOIP相关技术探讨专区
社区管理员
  • VOIP技术探讨社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧