PJSIP iOS无法解析IPV6网络中的SRV记录

时间:2016-05-18 18:27:11

标签: ios dns voip pjsip srv

由于苹果公司要求所有iOS应用程序都可以在IPV6网络中运行的新要求,我有一个基于PJSIP的VOIP客户端应用程序已完全破解。我正在尝试逐步解决问题。我想先解决的问题是SRV分辨率。

我在我的应用程序中执行srv这样的解决方案并且失败(超时/无结果)。我可以在我的同一个ipv6网络的mac上使用dig命令,它正确地解析了我试图从pjsip做的SRV记录。欢迎使用正确的API来输入IPV6的任何输入。

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 )
}

1 个答案:

答案 0 :(得分:3)

我正在努力。

Apple要求所有iOS开发人员使用Mac的网络共享测试他们的应用程序。该网络共享使用NAT64:enter image description here

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

Ref1至.: https://trac.pjsip.org/repos/wiki/IPv6

  

pjnath(STUN和ICE)中的IPv6支持

     

待完成。

     

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

Ref2。: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)的支持目前尚未出现在我们的路线图中。   但是,如果您有兴趣实施它,我们可以接受补丁。

+

但似乎有一个解决方法:

  

谢谢Riza,

     

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

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

你能用这种方式连接吗?

谢谢!