DevTrain

Autor: Rene Paschold

Ping auf einer Website ausführen

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!


Erfasst am: 01.03.2004 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=911
© Copyright 2003 ppedv AG - http://www.ppedv.de