Ping.Send(ip, timeout) in .Net kehrt zu schnell zurück und beschwert sich über TimeoutC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Ping.Send(ip, timeout) in .Net kehrt zu schnell zurück und beschwert sich über Timeout

Post by Anonymous »

Ich verwende diese Methode wiederholt, um die Verbindung zu einem Computer im lokalen Netzwerk zu überwachen. Wenn derselbe Test über cmd durchgeführt wird, sind die Ergebnisse stabil und konsistent:

Code: Select all

C:\Windows\system32>ping -t 192.168.11.12

Pinging 192.168.11.12 with 32 bytes of data:
Reply from 192.168.11.12: bytes=32 time=1ms TTL=126
Reply from 192.168.11.12: bytes=32 time=1ms TTL=126
Bei der Ausführung von C# mit einer Zeitüberschreitung von 500 ms schlägt es jedoch gelegentlich fehl, noch bevor die Zeitüberschreitung ablaufen kann:

Code: Select all

public void TestIpAnswersPing()
{
var ip = "192.168.11.12";
var timeout = TimeSpan.FromMilliseconds(500);

var p = new Ping();

foreach (var i in Enumerable.Range(0, 1000))
{
var start = DateTime.Now;
PingReply reply = p.Send(ip, (int)timeout.TotalMilliseconds);

if(reply.Status != IPStatus.Success)
{
Debug.Assert(DateTime.Now - start >= timeout);
}
}
}
Wenn ich das Timeout auf 1 Sekunde ändere, werden alle erfolgreich mit einer durchschnittlichen Ping-Zeit von 0,9 ms bestanden.

Das einzig Ähnliche, was ich gefunden habe, ist Folgendes: http://support.microsoft.com/kb/2533627, was nicht viel hilft.

Warum kann das passieren und wie kann man eine Hochgeschwindigkeitsverbindung überwachen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post