iOS 应用中支持 IPV6 的 pjsip 2.5.5

Posted

技术标签:

【中文标题】iOS 应用中支持 IPV6 的 pjsip 2.5.5【英文标题】:pjsip 2.5.5 with IPV6 support in iOS app 【发布时间】:2016-09-19 10:55:24 【问题描述】:

我在我的 ios 应用程序中使用 pjsip 2.5.5。在仅启用 IPV6 的网络中运行应用程序时,sip 注册不起作用。但如果我为启用 IPV4 的网络运行相同的代码,它适用于 sip 注册。我不知道缺少的东西在哪里,或者我们如何获得确切问题的描述?是否需要添加任何标志或任何其他支持才能将库用于网络 IPV4 和 IPV6?任何线索都会对我很有帮助。

【问题讨论】:

【参考方案1】:

AFAIK pjsip 不支持双栈 IPv4/IPv6。您需要为 IPv4 和 IPv6 创建单独的传输。

【讨论】:

非常感谢您的提示。您能否准确告诉我如何为 IPV4 和 IPV6 创建单独的传输?任何链接或任何细节请.. pjsua_transport_create(PJSIP_TRANSPORT_TLS, &transportConfig, &transportId); pjsua_transport_create(PJSIP_TRANSPORT_TLS6, &transportConfig, &transportId);然后编写类似传输管理器的东西来管理连接。我现在正在做。 Couse 与 pjsip 2.5.5 的 IPv6 有同样的问题。但似乎 pjsip 2.5.5 完全坏掉了((( 我对 pjsua_transport_create(PJSIP_TRANSPORT_TLS6, &transportConfig, &transportId); 进行了更改但似乎仍然是同样的问题。进行此更改后是否需要重新构建项目? 你取得了成功吗?我仍然面临这个问题。甚至从应用商店下载的一些实时应用程序也有同样的问题。【参考方案2】:

我之前的 iOS 应用程序也有同样的问题。以下是我的步骤。

1)我重新编译 pjsip 库以支持 ipv6,将“#define PJ_HAS_IPV6”添加到 config.h。您可以参考的详细信息 https://trac.pjsip.org/repos/wiki/IPv6#IPv6Supportinpjlib.

2) ipv4 地址更改为域。可能需要更改一些配置,这是后端开发者的配置,所以我不知道详细信息。

3) 创建 ipv6 传输并添加 SIP 帐户。详细代码如下https://trac.pjsip.org/repos/wiki/IPv6#IPv6Supportinpjlib。

如果一切正常,现在就可以注册了。但无法拨打电话。

我修复了 ipv6 呼叫参考https://github.com/johanlantz/pj-nat64。我将代码 pj-nat64() 放到我的项目和配置中。

【讨论】:

对于这个解决方案,您是否需要启用 IPv6 的服务器?? 不需要,只需要客户端配置。 意味着我们客户端必须在服务器上配置?你能详细说明一下吗?这可能对我有很大帮助。 @young 我不明白第 3 步。如何创建 ipv6 传输和添加 sip 帐户。请解释

以上是关于iOS 应用中支持 IPV6 的 pjsip 2.5.5的主要内容,如果未能解决你的问题,请参考以下文章

PJSIP-iOS源码编译

iOS应用支持IPV6,就那点事儿

iOS应用如何支持IPV6

iOS应用支持IPV6,就那点事儿

iOS应用如何支持IPV6-b

PJSIP iOS 错误