在Windows或Mac OS X终端中输入...
nslookup -type=SRV _xmpp-server._tcp.gmail.com
...(例如)您将收到一系列与不同Google聊天服务器相关的SRV记录。
有没有人在这方面有任何经验,并且可能知道如何使用iPhone SDK提供这些信息(主机名,端口,重量,优先级)?我已经尝试过Bonjour课程,但是还没有运气..
谢谢!
答案 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)
我认为您最好的选择是使用CFNetwork实施DNS查询工具。
答案 2 :(得分:0)
嗯,看起来我无法在模拟器或设备上运行system()
。我可以在模拟器上运行NSTask
,但不能在iPhone上运行,NSTask
不是Foundation
框架的一部分。
ISC BIND包具有BSD许可证。如果可行,也许dig
代码的相关部分可以直接包装到项目中。