Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net SIP寄存器失败_Vb.net_Visual Studio 2012_Sip_Voip - Fatal编程技术网

Vb.net SIP寄存器失败

Vb.net SIP寄存器失败,vb.net,visual-studio-2012,sip,voip,Vb.net,Visual Studio 2012,Sip,Voip,我正在尝试在Visual Studio 2012中创建一个小型VoIP客户端。 我正在尝试通过UDP从pc向AsteriskNOW PBX发送注册SIP消息。设备如下所示: IP PBX AsteriskNOW: 192.168.1.37 PC that sends REGISTER message: 192.168.1.104 SIP account username: 117 SIP account password: abcd1234 REGISTER sip:192.168.1.37

我正在尝试在Visual Studio 2012中创建一个小型VoIP客户端。 我正在尝试通过UDP从pc向AsteriskNOW PBX发送注册SIP消息。设备如下所示:

IP PBX AsteriskNOW: 192.168.1.37
PC that sends REGISTER message: 192.168.1.104
SIP account username: 117
SIP account password: abcd1234
REGISTER sip:192.168.1.37 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.104:5060;branch=z9hG4bK213760691;rport
From: <sip:117@192.168.1.37>;tag=1270517038
To: <sip:117@192.168.1.37>
Call-ID: 1808066864-5060-1@BJC.BGI.B.D
CSeq: 2001 REGISTER
Contact: <sip:117@192.168.1.104:5060>;reg-id=1;
+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"
Max-Forwards: 70
User-Agent: Grandstream GXP1165 1.0.6.7
Supported: path
Expires: 3600
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, 
UPDATE, MESSAGE
Content-Length: 0 
因此,我尝试发送的注册消息如下:

IP PBX AsteriskNOW: 192.168.1.37
PC that sends REGISTER message: 192.168.1.104
SIP account username: 117
SIP account password: abcd1234
REGISTER sip:192.168.1.37 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.104:5060;branch=z9hG4bK213760691;rport
From: <sip:117@192.168.1.37>;tag=1270517038
To: <sip:117@192.168.1.37>
Call-ID: 1808066864-5060-1@BJC.BGI.B.D
CSeq: 2001 REGISTER
Contact: <sip:117@192.168.1.104:5060>;reg-id=1;
+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"
Max-Forwards: 70
User-Agent: Grandstream GXP1165 1.0.6.7
Supported: path
Expires: 3600
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, 
UPDATE, MESSAGE
Content-Length: 0 
当然,在排队的时候

+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"
这是PC的网络适配器MAC,而不是AABBCCDDEEFF。 但是,当我尝试发送消息时,服务器会做出以下响应:

SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP
192.168.1.104:5060;rport=5060;received=192.168.1.104;branch=z9hG4bK213760691
Call-ID: 1808066864-5060-1@BJC.BGI.B.D
From: <sip:117@192.168.1.37>;tag=1270517038
To: <sip:117@192.168.1.37>;tag=z9hG4bK2137606914
CSeq: 2001 REGISTER
WWW-Authenticate: Digest
realm="asterisk",nonce="1428402653/99967d603c38695f1c328332db91a43b",
opaque="416e7e1767513798",algorithm=md5,qop="auth"
Server: FPBX-AsteriskNOW-12.0.43(13.0.1)
Content-Length:  0

有什么问题吗?谢谢大家!

我通过使用ozeki库管理SIP消息解决了这个问题 我在这里找到了图书馆


谢谢大家!

这是正常的,您发送一个注册,服务器称您未经授权,并将您需要用于计算凭据的WWW Authenticate头发回给您。也就是说,您应该对自己进行身份验证-如果您正在编写自己的SIP客户端,则需要仔细阅读SIP规范并遵循/实施完整的SIP协议。好的,谢谢!我读了很多关于SIP协议的文档,但是没有人详细解释这个具体步骤。。。关于我应该搜索什么和/或我可以尝试使用的任何链接,有什么建议吗?我在维基百科的这个链接上找到了一个解释:它说我应该计算MD5 HA1和HA2,然后计算响应。HA1=MD5username:realm:password,这很清楚,但是HA2=MD5method:digestURI呢?在哪里可以获得method和digestURI变量?下面是一个SIP身份验证摘要的C示例,您应该可以从中使用它。