我开发了一个VOIP应用程序,它使用PJSip通过SIP通道进行通信。我想要做的是创建一个HTTP隧道,以便系统即使在VOIP被阻止的区域也能工作。使用PJSip实现这个目的的方法是什么,或者如果有一些外部方法那么它如何与PJSip合并?
答案 0 :(得分:0)
没有简单的方法可以做到这一点。您必须在pjsip中编写另一个传输协议或修改当前传输以通过http隧道支持tcp / udp。还有如何通过HTTP“隧道”流量。您可能必须确保使用支持HTTP隧道的HTTP服务器。
这可能会为您提供SIP信令,但您可能会遇到RTP媒体流量问题。
您可能最好在pjsip代码中实现TURN支持。 pjsip已经支持TURN用于RTP媒体,因此使其支持主要SIP信令流量的TURN将更少工作。
虽然这假设您可以安装TURN服务器?如果您无法安装TURN服务器并且您的HTTP服务器不支持HTTP隧道,那么您可能会运气不佳。
答案 1 :(得分:0)
当局通过捕获您的SIP和RTP数据包来检测您的VoIP应用程序。您可以调整您的pjsip并强制通过一个网关发送所有数据(目前,pjsip为sip / RTP / rtcp等打开不同的端口)。您还必须更改每个传出数据包,以便当局无法知道数据包是sip或RTP数据包(他们通过查看数据头的结构知道数据包的类型)。 您还需要实现一个隧道类型系统,每个数据包在进入服务器之前都会通过该系统。此隧道应具有将数据包重组为其原始状态的功能。这样,您就可以将数据包发送到服务器而不会被阻止。