gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:43:17 26 4
gpt4 key购买 nike

随着苹果对所有 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 )
}

最佳答案

我也在做同样的事情。

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

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

引用 1: https://trac.pjsip.org/repos/wiki/IPv6

IPv6 Support in pjnath (STUN and ICE)

To be done.

The work for adding IPv6 support in pjnath is documented by ticket #422.

引用 2:http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-February/018965.html

On 29 Jan 2016, at 04:49, Riza Sulistyo wrote:

Hi Nick,

We have open ticket for ipv6 in (#419) and (#422). We are thinking about bumping the priority of one of the ticket to 2.6, however it's not decided yet at the moment.

+

Hi Nick,

Unfortunately, support for DNS (ipv6) is currently not on our roadmap since we have a workaround. However if you are interested in implementing it, we are open to the patch.

+

但似乎有一个解决方法:

Thanks Riza,

By resolving the server's ipv6 address and specifying that as the proxy, I have been able to get pjsip to connect over ipv6.

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

你能用这种方式连接吗?

谢谢!

关于ios - PJSIP iOS 无法解析 IPV6 网络中的 SRV 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37307472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com