2016-08-09 21 views
-1

Ich entwickle gerade ein Tool, das Benutzer unter bestimmten Umständen automatisch mit bestimmten drahtlosen Hotspots verbindet und authentifiziert. Um zu testen, ob das Gerät hinter einem Captive-Portal ist, sende ich eine HTTP-Anfrage über wininet und überprüfe, ob es umgeleitet wird (ja, ich kenne NCSI, funktioniert aber in diesem Fall nicht korrekt).Vergewissern Sie sich, dass ipconfig angewendet wurde

Wenn ich das direkt nachdem ich den Rückruf für eine erfolgreiche Wlan-Verbindung bekomme ich Fehler 12007 (Name nicht gelöst), die ich vermute, ist wegen der ipconfig nicht vollständig an diesem Punkt angewendet wird. Wenn ich einen Sleep() für 2-3 Sekunden einsetze, erhalte ich den Fehler nicht (da ich eines der schnelleren Geräte in unserer Hardware-Aufstellung habe, kann es auf anderen Zielgeräten variieren).

Gibt es eine Möglichkeit, programmgesteuert zu überprüfen, ob die Konfiguration vollständig auf die Schnittstelle angewendet wurde?

Ziel-Betriebssystem ist Windows 7

Retrying wie Jon schlägt vor, ist nicht wirklich eine machbare Option in diesem Fall, da ich einen Hotspot Registrierungsmodus in der Firewall zu ermöglichen, habe die nach einer bestimmten Anzahl von Netzwerkoperationen wieder schließt die Deshalb möchte ich das vermeiden.

Antwort

0

Normalerweise für eine Situation wie diese, wenn Sie Fehler abfangen können, würden Sie für eine bestimmte Zeit erneut versuchen, dann aufgeben (Timeout) mit dem letzten Fehler. Das ist einfacher und die gleiche Logik der OS sowieso

Ich würde also in diesem Fall der Umsetzung würde:

For X(default 30) seconds at most { 
    test if I can get a dns resolution 
    delay 1 second 
} 
+0

Hallo Jon, Danke für Ihre Antwort. Das ist im Grunde, was ich gerade mache. Das Problem mit dieser Methode ist, dass ich einen Hotspot-Registrierungsmodus in der Firewall aktivieren muss, der nach einer bestimmten Anzahl von Netzwerkoperationen automatisch wieder schließt, weshalb ich versuche, zu oft zu versuchen. Ich denke, ich sollte diese Info hinzufügen ... – Paul

0

Ganz möglicherweise die einfachste Lösung wäre, ein DNS-Lookup zu tun, einen zufällig erzeugten Namen verwenden innerhalb einer Domäne, die Sie steuern. Z.B. 79BF2DA7-EE45-4E11-89A4-45EEF2838003.guid.example.com. Dies sollte natürlich fehlschlagen, aber es muss fehlschlagen, indem eine negative Antwort vom DNS-Server zurückgegeben wird. Und dieser DNS-Server muss erreichbar sein, um eine negative Antwort zurückzugeben.

Verwandte Themen