2017-06-23 33 views
0

ホスト名からIPアドレスを取得できました。その逆もCFHostクラスを使用して取得できましたが、ホスト名からCNAMEを取得できませんでした。ホスト名/ IPアドレスのCNAME取得方法

CNAMEを取得するためにホスト名を解決する方法を知っている人はいません。

+0

CNAMEレコードを簡単に取得することはできません。 AレコードのCNAMEを指す逆のレコードはありません – Paulw11

+0

@ Paulw11 DNSServiceを使用して解決策を見つけました。 –

+0

@VarunMehta解決策を示す正解または完全回答を投稿するか、この質問を削除してください。 – rmaddy

答えて

0

解決策を見つけました。

+ (void) getCNAME { 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    DNSServiceRef serviceRef; 

    DNSServiceErrorType error; 

    error = DNSServiceQueryRecord(&serviceRef, 0, 0, "apple.com", kDNSServiceType_CNAME, 

            kDNSServiceClass_IN, queryCallback, NULL); 

    if (error != kDNSServiceErr_NoError){ 

     NSLog(@"DNS Service error"); 

    } 



    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(@"CNAME: %@", theTXT); 

}} 
関連する問題