ZhaiYuLei c198e85bce 初始化 | 4 lat temu | |
---|---|---|
.. | ||
HappyDNS | 4 lat temu | |
LICENSE | 4 lat temu | |
README.md | 4 lat temu |
调用系统底层Dns解析库,可以使用114 等第三方dns解析,也可以集成dnspod等httpdns。另外也有丰富的hosts 域名配置。
通过CocoaPods
pod "HappyDNS"
* 返回IP列表
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[QNResolver systemResolver]];
[array addObject:[[QNResolver alloc] initWithAddress:@"119.29.29.29"]];
QNDnsManager *dns = [[QNDnsManager alloc] init:array networkInfo:[QNNetworkInfo normal]];
NSArray *ips = [dns query:@"www.qiniu.com"];
* url 请求,返回一个IP 替换URL 里的domain
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[QNResolver systemResolver]];
[array addObject:[[QNResolver alloc] initWithAddress:@"119.29.29.29"]];
QNDnsManager *dns = [[QNDnsManager alloc] init:array networkInfo:[QNNetworkInfo normal]];
NSURL *u = [[NSURL alloc] initWithString:@"rtmp://www.qiniu.com/abc?q=1"];
NSURL *u2 = [dns queryAndReplaceWithIP:u];
兼容 getaddrinfo, 方便底层C代码接入
static QNDnsManager *dns = nil;
dns = [[QNDnsManager alloc] init:@[ [QNResolver systemResolver] ] networkInfo:nil];
[QNDnsManager setGetAddrInfoBlock:^NSArray *(NSString *host) {
return [dns query:host];
}];
struct addrinfo hints = {0};
struct addrinfo *ai = NULL;
int x = qn_getaddrinfo(host, "http", &hints, &ai);
qn_freeaddrinfo(ai); // 也可以用系统的freeaddrinfo, 代码一致,不过最好用这个
$ xctool -workspace HappyDNS.xcworkspace -scheme "HappyDNS_Mac" -sdk macosx -configuration Release test -test-sdk macosx
可以在单元测试上修改,熟悉使用
如果软件有国外的使用情况时,建议初始化程序采取这样的方式
QNDnsManager *dns;
if([QNDnsManager needHttpDns]){
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[[QNResolver alloc] initWithAddress:@"119.29.29.29"]];
[array addObject:[QNResolver systemResolver]];
dns = [[QNDnsManager alloc] init:array networkInfo:[QNNetworkInfo normal]];
}else{
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[QNResolver systemResolver]];
[array addObject:[[QNResolver alloc] initWithAddress:@"8.8.8.8"]];
dns = [[QNDnsManager alloc] init:array networkInfo:[QNNetworkInfo normal]];
}
详情参考代码提交指南。
The MIT License (MIT).详情见 License文件.