首页 文章

Android 2.3 SIP API如何处理NAT?

提问于
浏览
3

有一段时间我一直在使用Android 2.3 SDK中的SipDemo .

Android开发者页面上的文档编写得很好,但并不是很多 . 它没有解释有关IP,端口,NAT和STUN的任何信息 . 我知道这些东西应该如何工作,但它没有说明Android的SIP API如何处理它 . 或者它根本处理NAT ...

在这里,有人提到API确实对公共IP和端口进行了一些测试,但这是我第一次阅读它:http://code.google.com/p/android/issues/detail?id=14043&can=1&q=sip%20ip&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars所以我'm not sure this is true. At least for me, it didn'工作 .

但现在我的问题是:当我将SipDemo原样部署到连接到WiFi或模拟器的设备时,提供我的凭据(我知道它们与SipDroid和其他SIP应用程序一起使用),SipDemo显示“注册失败” . 我做了一些嗅探,发现发送到SipServer的数据包都包括设备或模拟器本地IP,而不是我的NAT的公共IP . 类似Via:SIP / 2.0 / UDP 192.168.0.106:53230服务器正确回复说不允许使用RFC1918 IP .

我在SipDemo中添加了一个STUN测试,并成功检索了我的公共IP和端口 . 但我找不到如何将其传递给我创建的SipProfile或SipManager的方法 .

我的问题:有没有人在NAT后面使用SIP API进行应用程序? API如何处理NAT?如何将从我自己的STUN客户端获取的信息传递给SIP API?

我知道SipDroid和许多其他SIP实现,但它们都不使用内置API .

1 回答

  • 0

    我在SipDemo中添加了一个STUN测试,并成功检索了我的公共IP和端口 . 但我找不到如何将其传递给我创建的SipProfile或SipManager的方法 .

    如果您支持对称NAT,则无关紧要,因为将为出站SIP连接创建新的NAT绑定,因此使用STUN收集的信息实际上并不可用 .

    您不应该从SIP API中了解NAT,服务器需要为您实现NAT遍历技术 .

    在某些情况下,您可以从客户端实际执行某些操作:当使用ICE并且您选择自己的TURN服务器时,我不认为Android实现了ICE和TRUN支持 . 即使它会,你仍然需要部署一个TRUN服务器......

    那里的免费服务确实实现了NAT遍历技术,你可以试试http://sip2sip.info .

相关问题