Wenn ich ein Remote-System mit Windows anpinge, wird keine Antwort angezeigt, aber wenn ich mit c # anpinge, wird Erfolg angezeigt. Windows ist korrekt, das Gerät ist nicht verbunden. Warum kann mein Code erfolgreich pingen, wenn Windows dies nicht ist?
Hier ist mein Code:
Ping p1 = new Ping();
PingReply PR = p1.Send("192.168.2.18");
// check when the ping is not success
while (!PR.Status.ToString().Equals("Success"))
{
Console.WriteLine(PR.Status.ToString());
PR = p1.Send("192.168.2.18");
}
// check after the ping is n success
while (PR.Status.ToString().Equals("Success"))
{
Console.WriteLine(PR.Status.ToString());
PR = p1.Send("192.168.2.18");
}
PR.Address
,PR.RoundtripTime
,PR.reply.Buffer.Length
undPR.Options.Ttl
)? Sind Sie auch sicher, dass Sie die richtige IP-Adresse in Ihrem Code haben und keine Test-IP-Adresse?Antworten:
quelle
using (var pinger = new Ping()) { .. }
und sind frühe Rückgaben so böse?using
und wird in diesem Fall bevorzugt.Die Verwendung von Ping in C # wird mithilfe der Methode erreicht
Ping.Send(System.Net.IPAddress)
, die eine Ping-Anforderung an die angegebene (gültige) IP-Adresse oder URL ausführt und eine Antwort erhält, die als ICMP-Paket (Internet Control Message Protocol) bezeichnet wird . Das Paket enthält einen Header von 20 Bytes, der die Antwortdaten des Servers enthält, der die Ping-Anforderung empfangen hat. Der .Net-Framework-System.Net.NetworkInformation
Namespace enthält eine aufgerufene KlassePingReply
mit Eigenschaften, mit denen dieICMP
Antwort übersetzt und nützliche Informationen über den Ping-Server bereitgestellt werden können, z.Das folgende Beispiel zeigt anhand eines einfachen Beispiels
WinForms
, wie Ping in c # funktioniert. Durch Angabe einer gültigen IP-AdressetextBox1
und Klicken aufbutton1
erstellen wir eine Instanz derPing
Klasse, eine lokale VariablePingReply
und eine Zeichenfolge zum Speichern der IP- oder URL-Adresse. Wir weisenPingReply
die Ping-Send
Methode zu und prüfen dann, ob die Anforderung erfolgreich war, indem wir den Status der Antwort mit dem Eigenschaftsstatus vergleichenIPAddress.Success
. Schließlich extrahieren wir ausPingReply
den Informationen, die wir für den Benutzer anzeigen müssen, wie oben beschrieben.quelle
Importiert System.Net.NetworkInformation
Öffentliche Funktion PingHost (ByVal nameOrAddress As String) As Boolean Dim Pingable As Boolean = False Dim Pinger As Ping Dim lPingReply As PingReply
quelle
quelle