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. 计算机内存碎片(中)——外部碎片化(内存 & 文件系统 & 数据库系统通杀)

    本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/17252221 外部碎片化 当计算机内存被划分成很细碎 ...

  2. sofa-pbrpc 1.1.1 发布,RPC 网络通信库

    https://www.oschina.net/news/77372/sofa-pbrpc-1-1-1 https://www.oschina.net/p/sofa-pbrpc

  3. go编程基础

    可见性规则: go语言,根据函数名首字母大小写区分private,和pulic. 函数名首字母小写为private 函数名首字母大写为public

  4. 文档数据库RavenDB-介绍与初体验

    文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...

  5. hdu2066一个人的旅行

    枚举全部相邻城市,作为起点,多次spfa,然后每次在想去的城市中找出spfa后的距离起点最短的花费时间 #include <iostream> #include <cstring&g ...

  6. Android中网络流量控制(防火墙)——Iptables

    Iptables简单介绍 iptables是与最新的 2.6.x 版本号 Linux 内核集成的 IP 信息包过滤系统. 假设 Linux 系统连接到因特网或 LAN.server或连接 LAN 和因 ...

  7. CentOS 6.4下编译安装MySQL 5.6.16

    一.卸载旧版本号MySql 1.rpm卸载: 1> 检查安装包: rpm -qa | grep mysql 2> 普通删除: rpm -e mysql-5.6.16.rpm 3> 强 ...

  8. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  9. 用Python对体积较大的CSV文件进行比较的经验

    用Python对体积较大的CSV文件进行比较的经验 » 进化的测试 | 进化的测试 用Python对体积较大的CSV文件进行比较的经验  python  Add comments 八 032010   ...

  10. Ubuntu下Chromium源码的编译

    一.失败的经历 印象中,谷歌建议Ubuntu建议版本为10.4.但是我找不到出处了,模糊的印象.不知道是不是这样? 1.Ubuntu10.4.3-desktop-amd64 + Virtual Box ...