iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 如何在iOS上执行DNS查询大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想执行一些DNS查询,例如要获取针对特定域名的IP记录,我在iOS 3.2 SDK上寻找首选方式或一些有用的代码段.
thanx提前

部分来自其他片段,我发现这个代码

Boolean result;
 CFHostRef hostRef;
 NSArray *addresses;
 NSString *hostname = @"apple.com";
 hostRef = CFHostCreateWithName(kcfAllocatorDefault,(CFStringRef)hostname);
 if (hostRef) {
      result = CFHostStartInfoResolution(hostRef,kcfHostAddresses,NULL); // pass an error instead of NULL here to find out why it Failed
      if (result == TRUE) {
           addresses = (NSArray*)CFHostGetAddressing(hostRef,&result);
      }
 }
 if (result == TRUE) {
      [addresses enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop) {
             NSString *strDNS = [NSString stringWithUTF8String:inet_ntoa(*((struct in_addr *)obj))];
           NSLog(@"Resolved %d->%@",idx,strDNS);
      }];

 } else {
      NSLog(@"Not resolved");
 }

但这是为每个主机生成相同的IP解决0-> 220.120.64.1任何帮助?

解决方法

弄清楚这个代码段的变化使其工作

if (result == TRUE) {
        NSMutableArray *tempDNS = [[NSMutableArray alloc] init];
        for(int i = 0; i < CFArrayGetCount(addresses); i++){
            struct sockaddr_in* remoteAddr;
            CFDataRef saData = (CFDataRef)CFArrayGetValueAtIndex(addresses,i);
            remoteAddr = (struct sockaddr_in*)CFDataGetBytePtr(saData);

            if(remoteAddr != NULL){
                // Extract the ip address
                //const char *strIP41 = inet_ntoa(remoteAddr->sin_addr);
                NSString *strDNS =[NSString stringWithCString:inet_ntoa(remoteAddr->sin_addr) encoding:NSASCIIStringEncoding];
                NSLog(@"RESOLVED %d:<%@>",i,strDNS);
                [tempDNS addObject:strDNS];
            }
        }
}

大佬总结

以上是大佬教程为你收集整理的iphone – 如何在iOS上执行DNS查询全部内容,希望文章能够帮你解决iphone – 如何在iOS上执行DNS查询所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: