4

由于苹果要求所有 iOS 应用程序都应在 IPV6 网络中运行,因此我有一个基于 PJSIP 的 VOIP 客户端应用程序完全损坏。我正在尝试逐步解决问题。我首先要解决的问题是 SRV 分辨率。

我在我的应用程序中进行了这样的 srv 解析,但它失败了(超时/无结果)。我可以在同一 ipv6 网络中的 mac 上使用 dig 命令,它可以正确解析我尝试从 pjsip 执行的 SRV 记录。欢迎在此处输入有关用于 IPV6 的正确 API 的任何信息。

pj_dns_resolver*  m_pDnsResolver = NULL;

::pj_dns_resolver_create(
                &( m_cachingPool.Get( ).factory ),  // pf (pool factory)
                NULL,                               // name
                0,                                  // options - must be 0
                NULL,                               // timer - unused
                NULL,                               // ioqueue - unused
                &m_pDnsResolver ) );                // p_resolver

// Set the name server to be used ( nameServer is 8.8.8.8 )
const std::string localNameServer = nameServer;

pj_str_t servers[] = { ::pj_str( const_cast< char* >( localNameServer.c_str( ) ) ) };


::pj_dns_resolver_set_ns(
                m_pDnsResolver,
                1,          // count
                servers,
                NULL ) );   // ports

// Resolver start query method ( DomainName cannot be mentioned here. SRV resolution works fine in IPV4 network )

void StartQuery( const std::string& domainName )
{
    PJString name( domainName );

   ::pj_dns_resolver_start_query(
                m_pDnsResolver,             // resolver
                &( name.Get( ) ),           // name
                PJ_DNS_TYPE_SRV,            // type
                0,                          // options - must be 0
                &ResolverCallback,
                this,                       // user_data
                &m_pAsyncQuery )
}
4

1 回答 1

3

我也在做同样的事情。

Apple 要求所有 iOS 开发人员使用 Mac 的网络共享测试他们的应用程序。该网络共享使用 NAT64 :在此处输入图像描述

基于多线程和 PJSIP 自己的文档,PJSIP 在 NAT 环境中尚不支持 IPv6。

参考 1: https ://trac.pjsip.org/repos/wiki/IPv6

pjnath 中的 IPv6 支持(STUN 和 ICE)

要完成。

在 pjnath 中添加 IPv6 支持的工作记录在票证 #422 中。

参考文献2:http : //lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-February/018965.html

2016 年 1 月 29 日 04:49,Riza Sulistyo 写道:

嗨尼克,

我们在 (#419) 和 (#422) 有 ipv6 的开放票。我们正在考虑将其中一张票的优先级提高到 2.6,但目前尚未决定。

+

嗨尼克,

不幸的是,由于我们有解决方法,目前我们的路线图上没有对 DNS (ipv6) 的支持。但是,如果您有兴趣实现它,我们对补丁持开放态度。

+

但似乎有一个解决方法:

谢谢里扎,

通过解析服务器的 ipv6 地址并将其指定为代理,我已经能够让 pjsip 通过 ipv6 进行连接。

我尝试使用完全相同版本的 PJSIP 库(2.4.5),但是当我尝试以这种方式连接到我的服务器时遇到了一个断言。

你可以这样连接吗?

谢谢!

于 2016-05-19T13:31:14.060 回答