话不多说,code如下:
#import <arpa/inet.h>
- (void)viewDidLoad {
[super viewDidLoad];
NSString * ipTemp = [self domainNameToIP:@"www.baidu.com"];
NSLog(@"域名转IP:%@", ipTemp);
}
// iOS开发之域名(Domain Name)转IP
- (NSString *)domainNameToIP:(NSString *)domainName{
NSString *strIP;
Boolean result = FALSE;
Boolean bResolved;
CFHostRef hostRef;
CFArrayRef addresses = NULL;
CFStringRef hostNameRef = CFStringCreateWithCString(kCFAllocatorDefault, [domainName cStringUsingEncoding:NSUTF8StringEncoding], kCFStringEncodingASCII);
hostRef = CFHostCreateWithName(kCFAllocatorDefault, hostNameRef);
if (hostRef) {
result = CFHostStartInfoResolution(hostRef, kCFHostAddresses, NULL);
if (result == TRUE) {
addresses = CFHostGetAddressing(hostRef, &result);
}
}
bResolved = result == TRUE ? true : false;
if(bResolved)
{
struct sockaddr_in* remoteAddr;
for(int i = 0; i < CFArrayGetCount(addresses); i++)
{
CFDataRef saData = (CFDataRef)CFArrayGetValueAtIndex(addresses, i);
remoteAddr = (struct sockaddr_in*)CFDataGetBytePtr(saData);
if(remoteAddr != NULL)
{
//获取IP地址
char ip[16];
strcpy(ip, inet_ntoa(remoteAddr->sin_addr));
strIP = [NSString stringWithFormat:@"%s",ip];
}
}
}
CFRelease(hostNameRef);
CFRelease(hostRef);
return strIP;
}