有一段时间了,我一直在玩Android 2.3 SDK中的SipDemo。Android 2.3 SIP API如何处理NAT?
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。