2010-04-01 8 views
4

Mon application Windows Mobile (écrite en C# avec le cadre compact) a besoin de savoir si une machine particulière est active ou non.Comment vider le cache DNS dans Windows Mobile par programmation?

Pour atteindre cet objectif, j'ai pensé à utiliser un mécanisme ping. J'ai essayé d'utiliser la classe Ping implémentée dans le framework opennetcf (la classe System.Net.NetworkInformation.Ping pour le .NET Framework ne fait pas partie du framework compact).

Parce que je donne un nom d'hôte à la fonction Ping.Send, il essaie d'abord de résoudre ce nom d'hôte et de récupérer une adresse IP. Mais j'observe le problème suivant: Si la première résolution dns échoue (parce que le réseau est en panne à ce moment), et si l'application essaie immédiatement encore d'envoyer le ping, elle échoue aussi, même si le réseau est notez plus bas. Je vérifie avec un analyseur de protocole de réseau célèbre et j'ai vu que seulement les demandes concernant la première résolution de DNS sont envoyées. Les requêtes concernant la résolution dns du second ping ne sont pas envoyées.

Pourquoi la deuxième requête DNS n'est-elle pas envoyée? Y a-t-il un mécanisme de cache DNS sur ces appareils Windows Mobile? Si oui, ce mécanisme peut-il être vidé par programmation?

EDIT: J'ai abandonné la recherche d'une solution à ce vidage DNS. J'ai choisi de faire un ping sur une adresse IP au lieu d'une machine de nom. Le problème de ping sur une adresse IP codée en dur est que nous devons être sûrs à 100% que cette adresse IP ne changera pas. L'adresse IP de la passerelle peut être utilisée car elle est toujours joignable (si ce n'est pas le cas, cela signifie que le réseau est en panne).

Répondre

Questions connexes