SRV запись поиска с iPhone SDK - PullRequest
       15

SRV запись поиска с iPhone SDK

4 голосов
/ 03 ноября 2008

В терминале Windows или Mac OS X, если вы наберете ...

nslookup -type=SRV _xmpp-server._tcp.gmail.com

... (например) вы получите кучу записей SRV, относящихся к различным серверам Google Chat ..

Кто-нибудь имеет опыт работы в этой области и, возможно, знает, как обрабатывать эту информацию (имя хоста, порт, вес, приоритет) с помощью iPhone SDK? Я экспериментировал с классами Bonjour, но пока не повезло ..

Спасибо!

Ответы [ 3 ]

11 голосов
/ 03 ноября 2008

Полагаю, вам нужно использовать платформу 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.

1 голос
/ 03 ноября 2008

Я думаю, что вам лучше всего внедрить инструмент DNS-запросов с использованием CFNetwork.

Попробуйте подробнее об этом здесь: http://developer.apple.com/documentation/Networking/Conceptual/CFNetwork/Introduction/chapter_1_section_1.html#//apple_ref/doc/uid/TP30001132-CH1-DontLinkElementID_24

0 голосов
/ 03 ноября 2008

Хм, похоже, я не могу запустить system() на симуляторе или устройстве. Я могу запустить NSTask на симуляторе, но не на iPhone, и NSTask не является частью Foundation framework.

Пакет ISC BIND имеет лицензию BSD. Если это возможно, возможно, соответствующие части кода dig могут быть непосредственно включены в проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...