CNSRE / HTTPDNSLib-for-iOS

HttpDNS lib 库 iOS版本。
BSD 2-Clause "Simplified" License
246 stars 61 forks source link

不错,用起来感觉还挺方便的,开始的时候没有搞明白 #1

Open loumzy opened 8 years ago

Forceofwind commented 8 years ago

嗯, 如果是IP域名,就不需要DNS翻译了。

loumzy commented 8 years ago

哦,明白了,怎么去申请你们的Http DNS server,没有找到接入地址,是在开发者平台上吗

loumzy commented 8 years ago

WBDNSHttpDnsPack.m中32行应该dns做个类型判断,如果dns是@"",报错

for (NSDictionary* tempIP in dns) {
    WBDNSIP* ip = [[WBDNSIP alloc]init];
    ip.ip = tempIP[@"ip"];
    ip.ttl = tempIP[@"ttl"];
    ip.priority = tempIP[@"priority"];
    [dnsPack.dns addObject:ip];
}
loumzy commented 8 years ago

当设置一个错误的dns时,比如1.1.1.1,调用从本地获取ip(WBDNSQueryManager.m 29行,- (WBDNSDomainModel )queryDomainIp:(NSString )sp host:(NSString *)host)会非常的卡顿, 主要是这里(getaddrinfo([host UTF8String], NULL, &hints, &addrs);)非常耗时,怎么解决啊

Forceofwind commented 8 years ago

我已经更新了 readme, 说明目前服务器还不支持商业化,支持之后,会更新说明文档。 你说的getaddrinfo是一个系统函数,实际使用中必须要同步获取 地址对应IP,卡顿可以通过放到子线程解决。 但是耗时问题,以我个人的理解,访问一个不可到达的IP,必然是要等到超时才能返回,我认为正常的。

lovewillover commented 8 years ago

您好,非常感谢您分享代码~ 有些疑问需要像您请教~。我用您的源码修改为默认去DNSPOD访问。 主要是关于智能排序的问题,我看源码sortManager中只是将测速rtt为依据进行了排序。请问在WBDNSIpModel中还有其他能够参与排序的字段比如成功次数等,因为我看了一篇文章和您的代码机制一直的,链接:http://www.360doc.com/content/15/1016/07/2909773_505968464.shtml 其中讲到排序模块儿有5个因子,不知道这个源码里面有没有用到除链接速度外的其他因子,如果没有,希望能够得到一些思路的指导。最好还是要感谢您分享代码

Forceofwind commented 8 years ago

五个因子排序是我们最初的想法,后面我们认为移动网络变化很快, 历史的连接质量参考不是太重要,ios版本做了简化,只有两个因子(速度和服务器优先级)本地进行网络连接测试,剔除连接不到的ip。

lovewillover commented 8 years ago

您好,感谢您的回复~ 在开发中我遇到一个问题需要向您请教。是关于cookie的,当使用httpdns服务将域名更换为ip后,就访问不到cookie了。请问该怎样解决这样的问题

lovewillover commented 8 years ago

感谢回复,其实也不是浏览器了。我们webView被劫持的比较严重,所以拦截了所有WebView的请求,替换域名为IP。目前情况是访问不到cookie了。挺棘手~

johntaiii commented 7 years ago

域名改成IP后,cookie得自己管理的吧,可以参考:https://yq.aliyun.com/articles/64356?spm=5176.8091938.0.0.QyFUdX