2008-11-03 79 views
4

在任何一個,如果你鍵入Windows或Mac OS X終端...SRV記錄查找與iPhone SDK

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

...(例如),您將收到與谷歌不同的一束SRV記錄聊天服務器..

有沒有人有任何這方面的經驗,並可能知道如何使用iPhone SDK服務這些信息(主機名,端口,重量,優先級)?我已經嘗試了Bonjour課程,但至今沒有運氣。

謝謝!

回答

11

我相信你需要使用DNSServiceDiscovery框架。我沒有iPhone SDK,但Google搜索表明它可以在iPhone上使用。

請參閱Apple Developer Site的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記錄字段的原始數據。

+0

上述鏈接已死亡。使用此:https://developer.apple.com/library/mac/documentation/networking/conceptual/dns_discovery_api/Introduction.html – JaredH 2014-08-20 02:56:49

0

嗯,看起來我不能在模擬器或設備上運行system()。我可以在模擬器上運行NSTask,但不能運行iPhone,並且NSTask不是Foundation框架的一部分。

該軟件包具有BSD許可。如果可行,代碼的相關部分可能直接包裝到項目中。