С новым требованием Apple, чтобы все приложения iOS работали в сети IPV6, у меня есть клиентское приложение VOIP на основе полностью разбитого PJSIP. Я пытаюсь решить проблемы шаг за шагом. Проблема, которую я хочу исправить, - это разрешение SRV.PJSIP iOS не может разрешить запись SRV в сети IPV6
Я делаю разрешение srv как это в моем приложении, и он терпит неудачу (тайм-аут/нет результата). Я мог бы использовать команду dig на моем mac, которая находится в той же сети ipv6, и правильно решает запись SRV, которую я пытаюсь сделать из pjsip. Любой вход на правильный 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)
}
Я не мог соединиться таким образом. Моей главной проблемой сейчас является разрешение DNS SRV, и я смог получить временное решение, используя API-интерфейс API обслуживания DNS Apple (Bonjour). Хорошая реализация онлайн. Я последовал за ним, и он, похоже, разрешил записи SRV для меня в среде ipv6. Дайте мне знать, если это сработает и для вас. https://justanapplication.wordpress.com/category/ios/ios_api/dns_sd_api/dnsservicequeryrecord/ – adsun
Обратите внимание, что последнее обновление поддерживает ipv6 NAT –
Я использую PJSIP 2.6. В этой версии мое приложение работает с IPv6, только если я предоставляю адрес IPv6. Но проблема стоит, если мой SIP-сервер не поддерживает адрес IPv6. В этом случае есть ли способ получить мое приложение, одобренное яблоком? –