如果您在 Windows 或 Mac OS X 终端中键入...
nslookup -type=SRV _xmpp-server._tcp.gmail.com
...(例如)您将收到一堆与不同的 google 聊天服务器相关的 SRV 记录..
有没有人在这方面有任何经验,并且可能知道如何使用 iPhone SDK 服务这些信息(主机名、端口、重量、优先级)?我已经尝试过 Bonjour 课程,但还没有运气..
谢谢!
如果您在 Windows 或 Mac OS X 终端中键入...
nslookup -type=SRV _xmpp-server._tcp.gmail.com
...(例如)您将收到一堆与不同的 google 聊天服务器相关的 SRV 记录..
有没有人在这方面有任何经验,并且可能知道如何使用 iPhone SDK 服务这些信息(主机名、端口、重量、优先级)?我已经尝试过 Bonjour 课程,但还没有运气..
谢谢!
我相信你需要使用 DNSServiceDiscovery 框架。我没有 iPhone SDK,但 Google 搜索表明它在 iPhone 上可用。
有关完整的 API 详细信息,请参阅 Apple 开发人员站点。
我也包含了一些(不完整的)示例代码:
#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 记录字段的原始数据。
我认为您最好的选择是使用 CFNetwork 实现 DNS 查询工具。
尝试在此处阅读有关此内容的更多信息:http: //developer.apple.com/documentation/Networking/Conceptual/CFNetwork/Introduction/chapter_1_section_1.html#//apple_ref/doc/uid/TP30001132-CH1-DontLinkElementID_24
嗯,看起来我无法system()
在模拟器或设备上运行。我可以NSTask
在模拟器上运行,但不能在 iPhone 上运行,并且NSTask
不是Foundation
框架的一部分。
ISC BIND包具有 BSD 许可证。如果可行,也许代码的相关部分dig
可以直接包装到项目中。