我的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可以使用,因为它始终可达(如果不是,则表示网络已断开)。