Tcp sip联系人中的PJSIP传输参数

Tcp sip联系人中的PJSIP传输参数,tcp,udp,sip,pjsip,Tcp,Udp,Sip,Pjsip,我正在将PJSIP用于SIP应用程序,并存在以下问题。当我使用注册URI“sip:test@172.31.5.153:5060“寄存器工作正常。当SipPhone通过UDP呼叫时,它可以正常工作,但当SoftPhone通过TCP呼叫时,应用程序以SIP OK应答,其中SIP OK的联系人中缺少“transport=TCP”参数,因此SoftPhone拒绝呼叫。有人知道这个问题并且知道一个简单的解决方法吗?谢谢您描述的行为听起来像是sip RFC中定义的完全“有效”的sip代理行为,这取决于代理对

我正在将PJSIP用于SIP应用程序,并存在以下问题。当我使用注册URI“sip:test@172.31.5.153:5060“寄存器工作正常。当SipPhone通过UDP呼叫时,它可以正常工作,但当SoftPhone通过TCP呼叫时,应用程序以SIP OK应答,其中SIP OK的联系人中缺少“transport=TCP”参数,因此SoftPhone拒绝呼叫。有人知道这个问题并且知道一个简单的解决方法吗?谢谢

您描述的行为听起来像是sip RFC中定义的完全“有效”的sip代理行为,这取决于代理对您在pjsip中设置的支持

我猜你没有在pjsip设置中正确设置UDP传输

您需要记住的是,代理完全可以向“联系人”地址发送新的对话框消息

通常,即使默认情况下使用UDP,您也必须为pjsip设置UDP和TCP传输,因为SIP消息大小对于UDP来说可能太大,并且必须使用TCP连接

如果您希望始终通过TCP进行连接,则必须在为帐户设置sip地址的帐户字段中添加“tansport=TCP”

我还建议,如果pjsip客户端通过NAT通过internet连接,那么您也可以打开支持(并希望代理服务器正确支持rport),因为当您在NAT后面时,sip服务器可能无法创建TCP/UDP连接返回给您