Android 2.3 SIP API如何处理NAT?

时间:2011-05-02 15:35:57

标签: android api sip stun

有一段时间我一直在玩Android 2.3中的SipDemo SDK。

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 所以我不确定这是真的。至少对我而言,它没有用。

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

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

我的问题: 有没有人使用SIP API后面的应用程序 NAT? API如何处理NAT?我怎样才能传递我得到的信息 从我自己的STUN客户端到SIP API?

我知道SipDroid和许多其他SIP实现,但他们 所有都不使用内置的API。

1 个答案:

答案 0 :(得分:0)

  

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

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

您不应该为SIP API烦恼,服务器需要为您实现NAT遍历技术。

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

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