由于苹果公司要求所有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 )
}
答案 0 :(得分:3)
我正在努力。
Apple要求所有iOS开发人员使用Mac的网络共享测试他们的应用程序。该网络共享使用NAT64:基于多个线程和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),但当我尝试以这种方式连接到我的服务器时,我遇到了断言。
你能用这种方式连接吗?
谢谢!