Как программно очистить кэш DNS в Windows Mobile? - PullRequest
4 голосов
/ 01 апреля 2010

Моему приложению для Windows Mobile (написанному на C # с компактной платформой) необходимо знать, активна ли конкретная машина.

Для достижения этой цели я подумал использовать механизм пинга. Я попытался использовать класс Ping, реализованный в платформе opennetcf (класс System.Net.NetworkInformation.Ping для .NET Framework не является частью компактной платформы).

Поскольку я назначаю функции Ping.Send имя хоста, она сначала пытается разрешить это имя хоста и получить IP-адрес.

Но я наблюдаю следующую проблему: Если первое разрешение DNS не удается (потому что сеть в данный момент не работает), и если приложение немедленно пытается снова отправить эхо-запрос, оно тоже не может работать, даже если сеть больше не работает. Я проверил с известным анализатором сетевых протоколов и увидел, что отправляются только запросы, касающиеся первого разрешения DNS. Запросы на разрешение dns второго пинга не отправляются.

Почему второй DNS-запрос не отправлен? Есть ли механизм DNS-кэша на таких устройствах Windows Mobile? Если да, может ли этот механизм быть сброшен программно?

РЕДАКТИРОВАТЬ: Я отказался от поиска решения для этого сброса DNS. Я решил пинговать IP-адрес вместо имени машины. Проблема проверки связи с IP-адресом с жестко закодированным адресом заключается в том, что мы должны быть на 100% уверены, что этот IP-адрес не изменится. IP-адрес шлюза можно использовать, потому что он всегда доступен (если нет, это означает, что сеть не работает).

1 Ответ

4 голосов
/ 08 июня 2010

Это хороший вопрос и потребовалось немного покопаться

Я знаю, что этот ответ может быть поздно, но попробуйте

http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesnative/thread/7eda3979-6424-4702-89f4-1f586b613b01

...