Pregunta

Mi aplicación necesita hacer una solicitud GET a un sitio web y me gustaría poder saber si está siendo bloqueada por un firewall, y pedirle al usuario que agregue una excepción.

¿Cómo puedo saber que mi solicitud de obtención falló debido a un firewall, en lugar de otra cosa?

¿Fue útil?

Solución

Si es un buen firewall, no puedes. Entre otras opciones, un firewall puede:

  • responda con uno de varios ICMP , indicando que el destino no es accesible, o
  • descarta silenciosamente la solicitud, lo que resulta en un tiempo de espera.

Una opción razonable es explicar por qué la aplicación no pudo acceder al sitio web y proporcionar algunas sugerencias útiles:

    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.

El punto importante es diferenciar, quizás mejor que lo que hice anteriormente, entre los tipos de falla y las razones detrás de ellos. Por ejemplo, los pasos para la solución de problemas "sin respuesta" será diferente de aquellos para la resolución de problemas ", el dispositivo me dijo que no está escuchando en ese puerto".

Otros consejos

Intenta acceder a Internet con un breve tiempo de espera ... Si el comando falla, puede suponer que la máquina tiene un firewall que requiere la interacción del usuario.

Si el cortafuegos es bueno, no puede detectarlo.

Utilice las API de Win32 Firewall (clásico)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top