我正在使用PJSIP进行SIP应用,并遇到以下问题。当我通过UDP注册注册URI" sip:test@172.31.5.153:5060"寄存器工作正常。当SipPhone通过UDP调用时,它可以正常工作,但是当SoftPhone通过TCP调用时,应用程序以SIP OK回答,其中" transport = tcp" SIP OK的联系中缺少参数,因此Softphone拒绝呼叫。有没有人知道这个问题并且知道一个简单的解决方案?感谢
答案 0 :(得分:2)
您描述的行为听起来像SIP SIP中定义的完全“有效”的SIP代理行为,具体取决于代理支持您在pjsip中设置的内容。
我的猜测是你没有在pjsip设置中正确设置UDP传输?
您必须记住的是,代理完全有效,可将 NEW 对话框消息发送到“联系”地址。
正常情况下,即使默认使用UDP,也必须为pjsip设置UDP和TCP传输,因为SIP消息大小对UDP来说太大而且必须使用TCP连接。
如果您想要始终通过TCP连接,则必须在帐户的{s}地址中添加“; tansport = tcp”。
我还建议如果pjsip客户端通过互联网通过互联网连接,你也打开pjsua_acc_config::id支持(并希望代理服务器支持rport正确),因为它可能是不可能的当你在NAT后面时,服务器会为你创建一个TCP / UDP连接。