У меня на руках интересная ситуация, и я не совсем уверен, как ее устранять. Я несколько раз искал что-то похожее на мою ситуацию, но ничего не соответствовало этому. Если ответ уже существует где-то здесь, я был бы признателен любому, кто укажет мне правильное направление.
Хорошо, ближе к делу.
Я пишу сторожевое приложение для мониторинга подключения к Интернету. Он предназначен для проверки связи набора доменов с заданным интервалом, и когда любой из них отвечает на проверку связи, таймер состояния сбрасывается. Если таймер состояния когда-либо выходит за пределы установленного порогового значения, предпринимаются попытки исправить проблему в несколько этапов.
Достаточно просто, не так ли?
Вот где это становится странным.
Я использую ICMPsendecho для отправки запроса ping. В моей среде разработки (win7) все работает нормально, тестирование и все прошло гладко. Однако в среде, в которой он развертывается, он не получает ответа. Среда развертывания - это компьютер с Windows XP с пакетом обновления 3 (SP3).
В процессе поиска и устранения неисправностей я заметил несколько вещей, которые могут помочь, а могут и не оказаться полезными при попытке решить эту проблему.
windows ping.exe отлично работает в среде развертывания для всех доменов, которые я использую для проверки состояния подключения, это только мои вызовы ICMPsendecho, которые, похоже, не генерируют ответы.
Я установил wirehark в среду развертывания и вижу, что пакеты успешно выдаются для запросов на обоих типах ping.пинг Windows генерирует пакеты запроса длиной 74 байта, а мой вызов программ генерирует пакеты длиной 42 байта. Пакеты ответов Windows на момент получения имеют размер 74 байта.
Переключение в среду разработки на минуту с установленным wirehark. Проверка связи Windows создает обстоятельства, похожие на среду развертывания с пакетами. Однако мое приложение, когда оно генерирует запросы, пакеты имеют длину 42 байта (так же, как и среда развертывания), но ответы, которые оно получает, имеют длину 60 байтов.
Как я уже сказал, эта информация может оказаться полезной, а может и не оказаться, но я пытаюсь выяснить, почему это приложение не может генерировать ответы ICMP, когда пинг Windows работает нормально на этой машине.
Еще один небольшой лакомый кусочек, который может помочь, мониторинг подключения к Интернету использует повышенные точки доступа 4g от AT&T, фактическое устройство представляет собой карту sierra wireless MC8790 AirPrime.
У кого-нибудь есть идеи, почему эти эхо-запросы не работают?
Заранее благодарим за любую полезную информацию, которая у вас может быть, и за то, что вы нашли время прочитать мой пост.
PS.