В терминале Windows или Mac OS X, если вы наберете ...
nslookup -type=SRV _xmpp-server._tcp.gmail.com
... (например) вы получите кучу записей SRV, относящихся к различным серверам чата Google ..
Есть ли у кого-нибудь опыт в этой области и, возможно, знает, как обслуживать эту информацию (имя хоста, порт, вес, приоритет) с помощью iPhone SDK? Я экспериментировал с классами Bonjour, но пока мне не повезло.
Спасибо!





Хм, похоже, я не могу запустить system() на симуляторе или устройстве. Я могу запустить NSTask на симуляторе, но не на iPhone, а NSTask не является частью среды Foundation.
Пакет ISC BIND имеет лицензию BSD. Если это возможно, возможно, соответствующие части кода dig могут быть напрямую включены в проект.
Я думаю, что лучше всего реализовать инструмент DNS-запросов с помощью CFNetwork.
Попробуйте прочитать об этом подробнее здесь: http://developer.apple.com/documentation/Networking/Conceptual/CFNetwork/Introduction/chapter_1_section_1.html#//apple_ref/doc/uid/TP30001132-CH1-DontLinkElementID_24
Я считаю, что вам нужно использовать структуру DNSServiceDiscovery. У меня нет iPhone SDK, но поиск в Google показывает, что он доступен на iPhone.
См. Сайт разработчиков Apple для полная информация об API.
Я также включил (неполный) образец кода:
#include <dns_sd.h>
int main(int argc, char *argv[])
{
DNSServiceRef sdRef;
DNSServiceErrorType res;
DNSServiceQueryRecord(
&sdRef, 0, 0,
"_xmpp-server._tcp.gmail.com",
kDNSServiceType_SRV,
kDNSServiceClass_IN,
callback,
NULL
);
DNSServiceProcessResult(sdRef);
DNSServiceRefDeallocate(sdRef);
}
Вам нужно будет предоставить свою собственную функцию обратного вызова и обратите внимание, что поле rdata, отправляемое в обратный вызов, имеет формат передачи, поэтому вам придется самостоятельно декодировать необработанные данные из полей записи SRV.
Некоторая дополнительная информация и использование - здесь
Ссылка выше мертва. Используйте это: developer.apple.com/library/mac/documentation/networking/…