Вопрос

Моему приложению необходимо отправить запрос GET на веб-сайт, и я хотел бы иметь возможность знать, блокируется ли он брандмауэром, и попросить пользователя добавить исключение.

Как я могу узнать, что мой запрос get не удался из-за брандмауэра, а не из-за чего-то другого?

Это было полезно?

Решение

Если это хороший брандмауэр, то вы не сможете.Среди других опций брандмауэр может:

  • ответьте одним из нескольких вариантов ICMP сообщения, указывающие на то, что пункт назначения недоступен, или
  • автоматически отмените запрос, что приведет к таймауту.

Разумный вариант - объяснить, почему приложению не удалось получить доступ к веб-сайту, и предоставить несколько полезных советов:

    No response from www.site.com:
    * Your computer may not be connected to the Internet.
    * The site may be down.
    * The site may be blocked by a firewall.
    The network indicated that www.site.com is not accessible:
    * Helpful messages go here.

Важным моментом является проведение различия, возможно, лучше, чем я сделал выше, между типы о неудаче, и о причины позади них.Например, шаги по устранению неполадок "нет ответа" будут отличаться от шагов по устранению неполадок "устройство сообщило мне, что оно не прослушивает этот порт".

Другие советы

Попробуйте получить доступ к Интернету за короткий промежуток времени ... Если команда не выполняется, вы можете предположить, что на машине установлен брандмауэр, который требует взаимодействия с пользователем.

Если брандмауэр исправен, вы не можете его обнаружить.

Использовать Win32 Firewall API (классический)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top