1、ipconfig /flushdns的作用

ipconfig /flushdns 这是清除DNS缓存用的。

当訪问一个站点时系统将从DNS缓存中读取该域名所相应的IP地址,当查找不到时就会到系统中查找hosts文件,假设还没有那么才会向DNSserver请求一个DNS查询,DNSserver将返回该域名所相应的IP,在你的系统收到解析地址以后将使用该IP地址进行訪问,同一时候将解析缓存到本地的DNS缓存中。

假设DNS地址无法解析,或者是DNS缓存中的地址错误,一般才会使用ipconfig/flushdns来清除全部的DNS缓存。

2、通过调用API函数来实现该命令行命令的运行

通过该命令的组成形式就可以得知,/flushdns应该是作为參数传给ipconfig.exe可运行程序的。假设要实现该命令的运行,能够使用system()函数,将ipconfig /flushdns作为參数来传入,该函数的运行受环境变量的影响,实际使用时可能存在问题。也能够考虑使用ShellExecute启动ipconfig.exe,并将/flushdns作为參数传递进来,但这样做也有问题,比方可能会遭到杀毒软件的拦截,对于Win7、Win8系统,可能会由于UAV权限问题被警告。

所以要看看有没有相应的API函数可供使用,直接调用API则最有效最安全。于是到MSDN中尝试着搜索,可是找不到相关的函数。既然是传递/flushdns參数运行ipconfig.exe,那尝试着使用VC自带的Depends工具看看是否能找到相应的接口。结果发现了其依赖的DNSAPI.DLL中有叫做DnsFlushResolverCache函数,例如以下图所看到的:

这个函数应该是非公开的API函数,那能够使用LoadLibrary显示载入,并用GetProcess得到函数指针,直接调用之就可以。通过搜索,得到该函数的原型声明:

BOOL  WINAPI  DnsFlushResolverCache(VOID);

从DNSAPI.DLL动态库中显式载入调用DnsFlushResolverCache的代码例如以下所看到的:

BOOL __stdcall DnsFlushResolverCache()
{
BOOL bRet = FALSE; typedef BOOL (WINAPI *PfuncDnsFlushResolverCache)(VOID);
HMODULE hDnsModule = LoadLibrary( _T("dnsapi.dll") );
if ( hDnsModule != NULL )
{
PfuncDnsFlushResolverCache pFlushFun = GetProcAddress( hDnsModule, "DnsFlushResolverCache" );
if ( pFlushFun != NULL )
{
pFlushFun();
bRet = TRUE;
} FreeLibrary( hDnsModule );
} return bRet;
}

      3、通过调用API函数来实现该命令行命令的运行

今天由于系统出现问题,终端一直无法登录到平台。为了解决该问题,将平台的网络由联通的网络切换到电信的网络,结果就出现了部分终端可以登录,部分终端不能登录的情况。考虑到可能是系统DNS缓存引起的,终端側将域名解析出来的地址一直是之前的联通地址(即缓存中的地址),所以一直无法登录。于是使用ipconfig /flushdns命令清理了一下系统的DNS缓存就可以正常登录了。为了规避这样由网络切换和DNS缓存引起的问题,可以考虑在多次登录失败后自己主动去清理系统的DNS缓存。直接运行上面找到的DnsFlushResolverCache函数就可以。

ipconfig /flushdns 清除系统DNS缓存的更多相关文章

  1. Vista/Win7以上系统查看和清除本地DNS缓存新方法

    你是否因修改网站DNS解析后,却因本机DNS缓存而需要等待... 你是否遇到修改了本机的hosts文件后,必须重起firefox和ie才起作用... 其实只要清空DNS缓存这些问题都可以解决. 查看D ...

  2. 如何清除本地DNS缓存 windows

    在您的网站迁移服务器时需要对域名所指向的IP进行更改,这时候在本机访问网站时就需要清除本地的DNS缓存信息,那么怎样清除呢? 首先我们应该明白清除DNS缓存信息的原理:当计算机对域名访问时并不是每次访 ...

  3. 清理dns缓存

    dns缓存是什么? DNS缓存指DNS返回了正确的IP之后,系统就会将这个结果临时储存起来.并且它会为缓存设定一个失效时间 (例如N小时),在这N小时之内,当你再次访问这个网站时,系统就会直接从你电脑 ...

  4. 易语言Dns缓存

    一些与DNS解析有关的命令: ipconfig/displaydns   -查看被缓存的域名解析 ipconfig/flushdns     -清空DNS缓存 .版本 .DLL命令 DnsFlushR ...

  5. windows查看与清理dns缓存

    1.windows下在命令行输入  ipconfig /flushdns 清理本地dns缓存查看dns缓存   ipconfig/displaydns2.Mac OSX下在命令行输入  lookupd ...

  6. DNS缓存失败怎么解决?

    DNS的中文名是域名系统,是域名和IP地址相互映射的一个分布式数据库.有了DNS,我们上网时直接输入网站域名(即网址)即可,而不用输入网站的IP地址访问网站,对于用户来说比较方便记忆和访问. 每次当我 ...

  7. 浏览器的DNS缓存

    通过设置hosts文件可以强制指定域名对应的IP,当修改hosts文件,想要浏览器生效,最直接的方法关闭浏览器后重新开启:如果不想重启浏览器,只需要清空浏览器的DNS缓存即可.清空DNS缓存在chro ...

  8. 刷新本地的DNS缓存数据

    ipconfig /flushdns”执行,刷新本地的DNS缓存数据. ipconfig /displaydns      查看本地DNS缓存记录的命令为:ipconfig /displaydns.你 ...

  9. 修改Hosts为何不生效,是DNS缓存?

    Update: 如果浏览器使用了代理工具,修改 Hosts 也不会生效.这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件.SwitchySharp等)的代理,建议调试的时候先关闭这些代理. ...

随机推荐

  1. uva 1343 非原创

    uva1343 原作者 题目题意是:给你的棋盘,在A-H方向上可以拨动,问你最少拨动几次可以是中心图案的数字一致 解题思路:回溯法,剪枝 其中要把每次拨动的字母所代表的位置提前用数组表示: 然后在如果 ...

  2. RapidCRC : Home

    RapidCRC : Home   What is RapidCRC? RapidCRC is a tool for windows for checking and creating CRC32 a ...

  3. 如何将excel文件中的数百万条数据在1分钟内导入数据库?

    在MYSQL里面,使用load data infile 命令就可以了. 步骤很简单 1.先将excel另存为csv格式的文本,csv是以逗号分隔各个字段数据的 2.在mysql中输入sql语句 loa ...

  4. ZeroMQ:云计算时代最好的通讯库

    还在学socket编程吗?还在研究为什么epoll比select更好吗? 噢,不必了! 在复杂的云计算环境中,我们面临的难题远比这个复杂得多. 庞大的服务器集群作为计算云,对来来看或许只是一个简单的搜 ...

  5. Windows环境下访问NFS(33篇Storage的文章)

    Windows环境下访问NFS 使用Solaris时,如果想在两台Solaris之间共享数据,那么你想到的最省事.最方便的方法肯定是nfs.但是现在的学生们的桌面,估计99%以上都是Windows,W ...

  6. 与众不同 windows phone (5) - Chooser(选择器)

    原文:与众不同 windows phone (5) - Chooser(选择器) [索引页][源码下载] 与众不同 windows phone (5) - Chooser(选择器) 作者:webabc ...

  7. SpringMVC批量上传

    @RequestMapping(value = "/upload") public String handleFormUpload(MultipartHttpServletRequ ...

  8. gap锁 对于unique index 和Ununique index

    Session 1: mysql> select * from s100; +-----+------+------+ | sn | id | info | +-----+------+---- ...

  9. 特么的. 最终把 amobbs 的站长阿莫(莫进明)给回骂了一顿.

    起因:  假设你居住的地方,要上马PX等高污染的项目,你会怎么做. 鼓动别人上街暴力示威与军警对抗. 自己待在家里支持怂恿. 这样的人真心猥琐! 鉴于他常常私自改动帖子, 在此截图留存. 真特么没劲. ...

  10. javascript学习初衷

    很久没有过来写东西了,由于要做小网页,介于不懂javascript,一味的去爬其他站点的代码下来,却不能自由组合,控制,达到自己想要的效果, 于是只能沉下心,javascript从头学起,还记得张老师 ...