, was dazu führen würde, dass ICMPsendEcho fehlschlägt, wenn ping.exe erfolgreich ist

8

Ich habe eine interessante Situation in meinen Händen, und ich bin mir nicht ganz sicher, wie ich sie beheben soll. Ich habe ein paar Suchen nach etwas ähnlich meiner Situation gemacht, aber nichts passt dazu. Wenn die Antwort bereits irgendwo hier existiert, würde ich mich über jeden freuen, der mich in die richtige Richtung weisen könnte.

Ok, auf den Punkt.

Ich schreibe eine Watchdog-Anwendung für die Überwachung der Internetverbindung. Es wurde entwickelt, um eine Reihe von Domänen in einem festgelegten Intervall zu pingen, und wenn einer von ihnen auf den Ping reagiert, wird der Status-Timer zurückgesetzt. Wenn der Status-Timer jemals einen festgelegten Schwellenwert überschreitet, werden mehrere Korrekturstufen versucht, das Problem zu beheben.

Einfach genug oder?

Hier wird es komisch.

Ich verwende ICMPsendecho, um die Ping-Anfrage zu stellen. In meiner Entwicklungsumgebung (win7) scheint es gut zu funktionieren, zu testen und alles lief reibungslos. In der Umgebung, in der es bereitgestellt wird, erhält es jedoch keine Antwort. Die Bereitstellungsumgebung ist eine Windows XP SP3-Maschine.

Während der Fehlersuche habe ich mehrere Dinge notiert, die hilfreich sein können, um dieses Problem zu lösen.

windows ping.exe funktioniert problemlos in der Implementierungsumgebung für alle Domänen, die ich zum Testen des Konnektivitätsstatus verwende. Es sind nur meine ICMPsendecho-Aufrufe, die anscheinend keine Antworten generieren.

Ich habe wireshark in der Deployment-Umgebung installiert, und ich kann feststellen, dass Pakete erfolgreich für die Anforderungen beider Ping-Typen ausgegeben werden. Der Windows-Ping generiert Request-Pakete mit einer Länge von 74 Bytes, und mein Programmaufruf erzeugt Pakete mit einer Länge von 42 Bytes. Windows-Antwortpakete sind ähnlich 74 Bytes, wenn sie empfangen werden.

Wechsel in die Entwicklungsumgebung für eine Minute, mit wireshark installiert. Windows Ping generiert einen ähnlichen Umstand wie in der Deployment-Umgebung mit den Paketen. Wenn die Anwendung jedoch Anforderungen generiert, sind die Pakete 42 Byte lang (wie die Implementierungsumgebung), die empfangenen Antworten haben jedoch eine Länge von 60 Byte.

Wie gesagt, diese Information kann nützlich sein oder auch nicht, aber ich versuche herauszufinden, warum diese Anwendung keine ICMP-Antworten erzeugt, wenn Windows-Ping auf diesem Rechner gut zu funktionieren scheint.

Ein weiterer kleiner Leckerbissen, der helfen könnte, war die Internetverbindung Überwachung verwendet AT & amp; T sind 4g Hotspots zu erhöhen, ist das eigentliche Gerät eine Sierra MC8790 AirPrime Karte.

Hat jemand irgendwelche Ideen, warum diese Pings versagen?

Vielen Dank im Voraus für alle nützlichen Informationen, die Sie haben könnten, und dafür, dass Sie sich die Zeit genommen haben, meinen Beitrag zu lesen.

PS.

    
PoultrySlave 20.02.2012, 20:53
quelle

3 Antworten

3

Die Antwort könnte in der Größe des von Ihnen gesendeten Pings liegen (es scheint eine undokumentierte Mindestgröße von 20 Byte für die Payload zu geben). Siehe diesen Beitrag für weitere Informationen: Ссылка

    
Gajib 29.02.2012, 18:41
quelle
2

Haben Sie die Benutzerberechtigungen überprüft? Ping.exe benötigt keine Administratorrechte, aber die rohen ICMP-Befehle in Windows benötigen Administratorrechte.

Siehe dieses Beispiel: Ссылка

  

Bitte beachten Sie jedoch, dass für Windows NT und Windows 2000   Implementierungen unterliegen Raw Sockets Sicherheitsüberprüfungen und sind   nur für Mitglieder der Administratorgruppe zugänglich.

Ein anderer möglicher Grund könnte eine Firewall sein, die ICMP-Pakete blockiert.

    
mjn 21.02.2012 08:16
quelle
0

Wir hatten denselben Fehler bei einem Client. Die Lösung bestand darin, IcmpSendEcho2 als Plan B zu implementieren, wenn IcmpSendEcho fehlschlägt. Es hat funktioniert!

    
Luís Mendes 10.05.2013 17:39
quelle

Tags und Links