黑基网 首页 学院 电脑技术 查看内容

DNS不稳定怎么办?

2015-3-9 16:28| 投稿: computer

摘要:   前段时间我们碰到一个很崩溃的问题,游戏在某些时候会在wifi下不能登录,切换到4G就可以了。错误码是  CURLE_COULDNT_RESOLVE_HOST, 查了...
  前段时间我们碰到一个很崩溃的问题,游戏在某些时候会在wifi下不能登录,切换到4G就可以了。错误码是  CURLE_COULDNT_RESOLVE_HOST, 查了一下代码,是在连接资源更新服务器时发生的。在电脑上用nslookup检查资源服务器的域名,果然也出现了错误,通知运维的同学,他们查了半天,确 认cdn的配置没有问题,是福建电信的dns服务器出错了。赶紧联系电信的同学,又查了半天,回复说是dns服务器的缓存太多导致的,重启以后就OK了。     这事算是解决了,但是总觉得不放心,谁知道dns服务器哪天又不行了呢。果然,最近这个问题又出现了。其实基于众所周知的原因,我上网的时候从来不用运营商分配的dns,都是直接设成google dns,8.8.8.8,但是你总不能改玩家的手机的dns吧。似乎没有什么好的办法了。     不过我们是不会轻易放弃的~,其实还有一个办法,就是curl返回CURLE_COULDNT_RESOLVE_HOST 这个错误的时候,表明系统提供的dns已经不能用了,那就自己用socket连接google dns做域名解析!在网上搜到一些源码,折腾了几天,终于移植成功!这样,每次用curl访问链接时发生dns错误的时候,就用google dns解析url里的域名,然后把域名替换成ip再访问,比如说,一个url是http://www.xyz.com/file-path.xml,就用 http://a.b.c.d/file-path.xml来访问。     但是,经过测试,又发现了新的问题,访问http://www.xyz.com/check-update.php?param...这样的php链接的 时候又不行了。这个做过服务端的人就会知道,如果服务器配置了虚拟主机,就必须用域名访问,用ip直接访问是不行滴。那就得完全跳过curl了,用 socket连接到解析出的ip,建tcp链接,发http请求,解析http返回的http协议...幸好找到了一个好用的开源实现http- parser (https://github.com/joyent/http-parser),又是一顿移植,调试,测试....终于搞定了。     我觉得这应该是一个普遍的问题,不知道有没有同学也遇到过类似的问题,有没有更好的解决办法?
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论


新出炉

返回顶部