Service nicht erreichbar? Server antwortet nicht? Um heraus zu finden ob der Host generell noch existiert, kann man einen Ping absetzten um zu sehen ob die Zieladresse erreichbar ist. Im Web einen Ping auszuführen war in der Vergangenheit entweder über Komponenten von Drittanbietern möglich oder es musste der Windows Scripting Host manipuliert werden. Verwendet man ASP.NET ist dies nicht mehr notwendig da in der FCL Klassen zur Verfügung gestellt werden mit denen man den Ping Prozess sehr einfach aufrufen können.
Zuerst wird das Frontend gebaut:
Bei Klick auf den Button Ping ausführen wird folgender Code abgearbeitet:
Private Sub ButtonPing_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs _ ) Handles ButtonPing.Click
'Neuen Prozess erstellen Dim proc As New Process
'Muss auf False stehen um E/A Streams umzuleiten proc.StartInfo.UseShellExecute = False
'Auszuführende Befehl proc.StartInfo.FileName = "ping"
'Argumente an den Befehl hängen proc.StartInfo.Arguments = TextBoxHost.Text
'Bestimmt, damit die Ausgabe des Prozesses in 'einen Stream geschrieben werden kann proc.StartInfo.RedirectStandardOutput = True
'Startet den Prozess proc.Start()
'Wartet bis der Prozess beendet wird proc.WaitForExit()
'Prozessausgabe einlesen und in Variable schreiben Dim ausgabe As String = _ proc.StandardOutput.ReadToEnd()
'Ergebnis in Label schreiben LabelAusgabe.Text = _ ausgabe.Replace(Environment.NewLine, "<br>")
End Sub |
Damit der Ping ausgeführt und das Ergebnis dargestellt werden kann müssen folgende Eigenschaften und Methoden gesetzt bzw. ausgeführt werden:
StartInfo.UseShellExecute |
Ruft einen Wert ab, der angibt, ob zum Starten des Prozesses die Betriebssystemshell verwendet werden soll, oder legt diesen fest. |
StartInfo.Filename |
Ruft die zu startende Anwendung oder das zu startende Dokument ab oder legt die Anwendung bzw. das Dokument fest. |
StartInfo.Arguments |
Ruft den Satz von Befehlszeilenargumenten ab, die beim Starten der Anwendung verwendet werden sollen, oder legt diesen fest. |
StartInfo.RedirectStandardOutput |
Ruft einen Wert ab, der angibt, ob die Ausgabe des Prozesses in den StandardOutput-Member der Process-Instanz geschrieben wird, so dass Sie in ein anderes Ziel als den Standardausgabestream (i. d. R. der Monitorbildschirm) schreiben können, oder legt diesen fest. Wird z. B. verwendet, um Daten in eine Datei zu schreiben. |
Start() |
Startet eine Prozessressource und ordnet sie einer Process-Komponente zu. |
WaitForExit() |
Legt die Zeitspanne für das Warten auf die Beendigung des zugeordneten Prozesses fest und blockiert den aktuellen Ausführungsthread, bis die Zeit verstrichen oder der Prozess beendet ist. |
StandardOutput.ReadToEnd() |
Liest den Stream von der aktuellen Position bis zum Ende des Streams. |
Viel Spaß beim pingen!