如何在Windows Mobile中以编程方式清除DNS缓存?

4

我的Windows移动应用程序(使用紧凑框架和C#编写)需要知道特定计算机是否活动。

为了达到这个目的,我考虑使用ping机制。我尝试使用在opennetcf框架中实现的Ping类(.NET Framework中的System.Net.NetworkInformation.Ping类不是紧凑框架的一部分)。

因为我给Ping.Send函数提供了主机名,它首先尝试解析此主机名并检索IP地址。

但我观察到以下问题: 如果第一个DNS解析失败(因为此时网络已经断开),并且应用程序立即再次尝试发送ping请求,则即使网络不再断开,它也会失败。 我使用了一个著名的网络协议分析器进行了检查,发现只有关于第一个DNS解析的请求被发送。关于第二个ping的DNS解析请求未被发送。

为什么第二个DNS请求没有发送? 在Windows Mobile设备上是否有任何DNS缓存机制? 如果有,可以通过编程方式刷新此机制吗?

编辑:我放弃了找到解决DNS清除的方法。 我选择ping IP地址而不是名称。 硬编码地址IP的问题在于我们必须确保该IP不会更改。 网关IP可以使用,因为它始终可达(如果不是,则表示网络已断开)。

1个回答

4
这是一个好问题,需要一些挖掘。
我知道这个答案可能有点晚,但还是试试吧。 这里有一个相关的讨论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接