2

TXTObjective-C でドメインの DNS レコードを取得するにはどうすればよいですか?

私の目標は、次と同じ出力を得ることです。dig -t txt google.com +short

PS: いいえNSTask/pipping してください! (私は現在それをやっていますが、それは悪いです)。コードは C で記述できます。後でラッパーを記述します。AppStore のルールは気にしません。

ありがとうございました!

4

2 に答える 2

4

DNSServiceQueryRecordで使用dns_sd.h:

#import <dns_sd.h>

// ...

DNSServiceRef serviceRef;

DNSServiceQueryRecord(&serviceRef, 0, 0, "hmspl.de", kDNSServiceType_TXT,
                      kDNSServiceClass_IN, queryCallback, NULL);

DNSServiceProcessResult(serviceRef);
DNSServiceRefDeallocate(serviceRef);

// ...

static void queryCallback(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
                          DNSServiceErrorType errorCode, const char *fullname, uint16_t rrtype,
                          uint16_t rrclass, uint16_t rdlen, const void *rdata, uint32_t ttl, void *context) {

    if (errorCode == kDNSServiceErr_NoError && rdlen > 1) {
        NSMutableData *txtData = [NSMutableData dataWithCapacity:rdlen];

        for (uint16_t i = 1; i < rdlen; i += 256) {
            [txtData appendBytes:rdata + i length:MIN(rdlen - i, 255)];
        }

        NSString *theTXT = [[NSString alloc] initWithBytes:txtData.bytes length:txtData.length encoding:NSASCIIStringEncoding];
        NSLog(@"%@", theTXT);
    }
}

https://developer.apple.com/library/mac/#documentation/Networking/Reference/DNSServiceDiscovery_CRef/Reference/reference.html#//apple_ref/doc/c_ref/DNSServiceQueryRecordを参照してください。

于 2013-06-26T22:17:40.623 に答える