ipconfig出现很多IP地址,怎么清楚缓存地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ipconfig出现很多IP地址,怎么清楚缓存地址相关的知识,希望对你有一定的参考价值。

当我在电脑里通过ipconfig查询本地地址时,出现很多IP地址,请问怎么清除这些IP地址,希望大神帮助,谢谢

1、ipconfig /flushdns的作用

ipconfig /flushdns 这是清除DNS缓存用的。
当访问一个网站时系统将从DNS缓存中读取该域名所对应的IP地址,当查找不到时就会到系统中查找hosts文件,如果还没有那么才会向DNS服务器请求一个DNS查询,DNS服务器将返回该域名所对应的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得到函数指针,直接调用之即可。通过搜索,得到该函数的原型声明:

[cpp] view plain copy
BOOL WINAPI DnsFlushResolverCache(VOID);
从DNSAPI.DLL动态库中显式加载调用DnsFlushResolverCache的代码如下所示:

[cpp] view plain copy
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缓存。
参考技术A 请检查你的IP地址是静态绑定的,还是动态自动获取的。IPV4高级那里可以设置多个IP地址的,是不是这个问题,不是的话,设置动态自动获取。
也可以试一下获取和释放IP地址,释放后再获取。释放命令ipconfig /release 获取命令ipconfig /renew
望采纳,谢谢

ipconfig会出现多个IP地址

一、问题描述

  今天调试程序的时候发现电脑有两个IP地址,一时间不知道该用哪个?如下图:

        

 

二、问题分析

  第一个叫ppp适配器,是一个逻辑的虚拟设备,ppp的意思是Point-to-Point Protocol——点对点协议,而我们上网拨号用的就是PPPOE,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。简单来说,ppp适配器就是用于将你的电脑通过网线&电话线和运营商提供上网的服务器连接起来,以此获取运营商分配的IP地址的,所以它给的IP就是在这个运营商服务器所提供的网络中区分你当前上网帐号(当前电脑)的唯一标识。(由于各个运营商之间是协商好瓜分ip的,所以这个ip也就是因特网中的唯一ip)

  第二个叫以太网适配器,有计算机基础的同学应该都知道以太网适配器就是我们常说的“网卡”,所以就很清楚了,网卡是用于将你的电脑通过网线和你的交换机连接起来,所以它给的IP就是在你的交换机提供的网络中区分你的电脑的唯一标识。【注意,使用路由器后ip地址自动获取,所以不需要拨号,只有这个IP】

  同理,我们还有一个无线网卡,如果此时再连入其他无线路由,那么也会再多一个IP,也就是三个IP了。(但是电脑优先连接有线,所以在把网线拔了之前,这个ip不能用)

 

三、问题解决

  本地局域网连接——“以太网适配器”下的ip就行;(“ppp适配器”下的也可以)

  因特网——“PPP适配器”下的IP。(此时“以太网适配器”下的就不能用了)

 

以上是关于ipconfig出现很多IP地址,怎么清楚缓存地址的主要内容,如果未能解决你的问题,请参考以下文章

笔记本电脑怎么查IP地址?

笔记本电脑怎么查IP地址?

需要查看主机的TCP/IP配置属性可以使用啥命令?

如何用ping查看本地IP地址

使用IPCONFIG命令后发现有两个IP地址是怎么回事?

为啥我用IPconfig出现3个IP