使用iPhone SDK进行SRV记录查找

时间:2008-11-03 10:28:08

标签: iphone objective-c cocoa-touch dns

在Windows或Mac OS X终端中输入...

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

...(例如)您将收到一系列与不同Google聊天服务器相关的SRV记录。

有没有人在这方面有任何经验,并且可能知道如何使用iPhone SDK提供这些信息(主机名,端口,重量,优先级)?我已经尝试过Bonjour课程,但是还没有运气..

谢谢!

3 个答案:

答案 0 :(得分:11)

我相信您需要使用DNSServiceDiscovery框架。我没有iPhone SDK,但谷歌搜索表明它可以在iPhone上使用。

请参阅Apple开发人员网站full API details

我也包含了一些(不完整的)示例代码:

#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 :(得分:1)

答案 2 :(得分:0)

嗯,看起来我无法在模拟器或设备上运行system()。我可以在模拟器上运行NSTask,但不能在iPhone上运行,NSTask不是Foundation框架的一部分。

ISC BIND包具有BSD许可证。如果可行,也许dig代码的相关部分可以直接包装到项目中。