本方法利用C语言的方式解决域名转IP
C语言部分如下
//
// DNSManager.c
//
// Created by icesnow on 15/9/10.
// Copyright (c) 2015年 icesnow. All rights reserved.
//
#include <stdio.h>
#include <netdb.h>
#include <string.h>
char *getDNSToIP(char*HOST)
{
struct hostent *host_entry;
char host_name[256] ="www.baidu.com";
/* 即要解析的域名或主机名 */
host_entry=gethostbyname(host_name);
if(host_entry!=0)
{
sprintf(HOST,"%d.%d.%d.%d",
(host_entry->h_addr_list[0][0]&0x00ff),
(host_entry->h_addr_list[0][1]&0x00ff),
(host_entry->h_addr_list[0][2]&0x00ff),
(host_entry->h_addr_list[0][3]&0x00ff));
return HOST;
} else
{
strcpy(host_name,"www.youtube.com");
host_entry=gethostbyname(host_name);
if(host_entry!=0)
{
sprintf(HOST,"%d.%d.%d.%d",
(host_entry->h_addr_list[0][0]&0x00ff),
(host_entry->h_addr_list[0][1]&0x00ff),
(host_entry->h_addr_list[0][2]&0x00ff),
(host_entry->h_addr_list[0][3]&0x00ff));
return HOST;
}
}
return HOST;
}
桥接文件Bridging-Header.h
char *getDNSToIP(char*HOST);
Swift语言部分
private func dnsToIP() -> String? {
var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
let result = getDNSToIP(&hostname)
let ipAddress = String.fromCString(result)
if ipAddress != nil && !ipAddress!.isEmpty {
return ipAddress!
} else {
NSLog("域名出错")
return nil
}
}
经测试目前没什么问题,同时感谢阿勇
c语言代码支持