【问题标题】:How does Android 2.3 SIP API handle NATs?Android 2.3 SIP API 如何处理 NAT?
【发布时间】:2011-08-17 01:51:14
【问题描述】:

一段时间以来,我一直在使用 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 的公共 IP 一。类似通过: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。

【问题讨论】:

    标签: android api sip stun


    【解决方案1】:

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

    如果您在对称 NAT 之后,则没关系,因为将为出站 SIP 连接创建一个新的 NAT 绑定,因此您使用 STUN 收集的信息并不真正可用。

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

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

    那里的免费服务确实实现了 NAT 穿越技术,例如,您可以尝试http://sip2sip.info

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多