直接 SIP 呼叫到 IP
Posted
技术标签:
【中文标题】直接 SIP 呼叫到 IP【英文标题】:Direct SIP call to IP 【发布时间】:2011-08-26 20:29:52 【问题描述】:我正在为我的最终项目编写一个应该具有 VoIP 功能的应用程序。我已经开始使用 android 2.3 包含的新 SIP API 进行测试。问题是我实际上住在学生宿舍,所以我通过大楼的代理连接到互联网,它似乎有严格的防火墙,不让任何东西通过。
我尝试了几个免费的 SIP 服务器和客户端,结果总是一样:从我的 UAC 可以看到其他客户端是否在线,我什至可以发送短信,但无法建立实际通话。我从来没有从客户那里得到任何回应。使用 Linphone 客户端我什至无法连接到 SIP 服务器进行身份验证。
问题是,我似乎无法在我的建筑物外拨打电话,但我已经从安装在模拟器上的另一个 Linphone 客户端成功联系了安装在我电脑上的 Linphone 客户端。显然,我可以在没有任何 SIP 服务器的情况下在本地网络内拨打电话,只需使用接收方的本地地址而不是其 SIP 域。
问题是:我可以对新的 android 2.3 SIP API 做同样的事情吗?我可以在我的本地网络内拨打电话,只需拨打接收方的本地地址,而无需通过我建筑物外的任何 SIP 服务器进行身份验证吗?
由于我的应用程序是用于演示目的,这对我来说就足够了。在过去的三天里,我一直在寻找这个问题的解决方案,但我没有想出任何有用的东西。 :/
提前致谢。
【问题讨论】:
【参考方案1】:我看不出有任何理由说明它在 Android 2.3 中是不可能的。点对点调用可以与其他客户端本地地址和端口。
您也可以在您的 PC 上安装 SIP 服务器Brekeke server。并且您可以使用完整的 sip URI 进行呼叫。
【讨论】:
【参考方案2】:因为音频和视频数据是通过与 sip 端口号不同的端口号发送的。 sip 端口是 tcp,您可以在互联网上登录您的 sip 服务器。但是媒体端口是udp,你在nat后面,你不能打电话。为此,防火墙需要了解 sip 消息,然后它应该为 udp 媒体打开端口。您还需要 stun 服务器来获取 nat 遍历消息。
【讨论】:
以上是关于直接 SIP 呼叫到 IP的主要内容,如果未能解决你的问题,请参考以下文章