2009-03-13 12 views
2

Meine App muss eine GET-Anfrage an eine Website senden, und ich möchte wissen, ob sie von einer Firewall blockiert wird, und den Benutzer bitten, eine Ausnahme hinzuzufügen.Wie erkennt man eine Firewall in Windows?

Wie kann ich herausfinden, dass meine Abrufanforderung aufgrund einer Firewall fehlgeschlagen ist, anstatt auf etwas anderem?

Antwort

6

Wenn es eine gute Firewall ist, können Sie nicht. Unter anderen Optionen kann eine Firewall:

  • Antwort mit einem von mehreren verschiedenen ICMP Nachrichten, das Ziel angibt, ist nicht zugänglich, oder
  • leise die Anforderung verwerfen, in einem Timeout führt.

Eine vernünftige Option ist zu erklären, warum die App nicht in der Lage war, die Website zugreifen, und geben Sie einige hilfreiche Vorschläge:

 
    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. 

Der wichtige Punkt zu unterscheiden ist, vielleicht besser als ich oben, zwischen den Typen des Fehlers, und die Gründe hinter ihnen. Zum Beispiel unterscheiden sich die Schritte zur Fehlerbehebung "keine Antwort" von denen für die Fehlerbehebung "das Gerät sagte mir, dass es nicht auf diesen Port hört."

1

Versuchen Sie, mit einem kurzen Timeout auf das Internet zuzugreifen ... Wenn der Befehl fehlschlägt, können Sie annehmen, dass der Computer über eine Firewall verfügt, die eine Benutzerinteraktion erfordert.

Wenn die Firewall gut ist, können Sie sie nicht erkennen.

+0

Zugriff auf _what_ im Internet? Im Allgemeinen befindet sich die Firewall nicht auf dem Computer des Benutzers. Es ist entweder an einer Unternehmensgrenze oder am Zielende - Firewalls (sehr allgemein) hindern Sie daran, eine bestimmte Maschine in eine andere zu bringen. –

0

Win32 Firewall verwenden apis (klassisch)