Benutzer mit den meisten Antworten
Auslesen der IP Adresse

Frage
-
Habe es jetzt hinbekommen das er einen Ping sendet.
Allerdings nur von einer Im quelltext hinterlegten IP-Adresse.
Wie muss ich folgenden Code ändern das ich die IP aus einer Txtbox auslesen kann
[Code]
{
Ping Sender = new Ping();
PingReply Result = Sender.Send("172.20.10.1");
if (Result.Status == IPStatus.Success)
{
panel1.BackColor = System.Drawing.Color.Green;
label1.Text = ("Online");
}
else
{
panel1.BackColor = System.Drawing.Color.Red;
label1.Text = "Offline";
}
}[/code]
Antworten
-
Hallo Basti,
Sieh Dir doch bitte das MSDN-Beispiel zu PingReply an:
PingReply-Klasse
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.pingreply.aspxJe nachdem was Du konkret damit vorhast, könnten auch die verschiedenen Überladungen von Ping.Send für Dich von Interesse sein (z.B. Ping.Send-Methode (IPAddress)):
Ping.Send-Methode:
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.ping.send.aspxGruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:51
-
Hallo Basti,
Wenn Du den ping-Vorgang n-mal wiederholen möchtest, bietet Dir die Methode Ping.SendAsync() einen guten Startpunkt. Die Echo-Meldungen werden asynchron auf eigenen Threads ausgeführt. Ein Beispiel für die Verwendung von Ping.SendAsync() findest Du hier (zweites Codebeispiel).
Was nun Deine Eingabe-Textfelder angeht: Deine Anforderungen für die Überprüfung der IP-Adresse sind unzureichend. Sie würden auch unzulässige Adresseneingaben ermöglichen. Darum würde ich die Validität der Texteingabe im OnValidating-Ereignishandler der TextBox mittels RegEx überprüfen:
private void txtIP_Validating(object sender, CancelEventArgs e) { try { string ipv4pattern = @"\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b"; e.Cancel = !System.Text.RegularExpressions.Regex.IsMatch(txtIP.Text, ipv4pattern); } catch (ArgumentException) { //etc. } }
Die Textbox für die Anzahl der Pinganforderungen würde ich einfachheitshalber durch ein NumericUpDown-Control ersetzen (oder eine MaskedTextBox mit einer numerischen Mask).
Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:50
-
Hallo,
Indem Du Result.Status überprüfst.
PingReply-Klasse
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.pingreply.aspxIPStatus-Enumeration
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.ipstatus(v=VS.100).aspxLies bitte die MSDN-Dokumentation zum Thema wenigstens einmal durch.
Gruss
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:50
-
Hi,
Wie muss ich folgenden Code ändern das ich die IP aus einer Txtbox auslesen kann
[Code]
{
Ping Sender = new Ping();
PingReply Result = Sender.Send("172.20.10.1");PingReply Result = Sender.Send( <TextBox>.Text );
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:51
Alle Antworten
-
Hi,
Wie muss ich folgenden Code ändern das ich die IP aus einer Txtbox auslesen kann
[Code]
{
Ping Sender = new Ping();
PingReply Result = Sender.Send("172.20.10.1");PingReply Result = Sender.Send( <TextBox>.Text );
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:51
-
Hallo Basti,
Sieh Dir doch bitte das MSDN-Beispiel zu PingReply an:
PingReply-Klasse
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.pingreply.aspxJe nachdem was Du konkret damit vorhast, könnten auch die verschiedenen Überladungen von Ping.Send für Dich von Interesse sein (z.B. Ping.Send-Methode (IPAddress)):
Ping.Send-Methode:
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.ping.send.aspxGruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:51
-
Danke
Kann ich auch festlegen das ich zb. den ping-Vorgang mit der option "-n 5" benutzen kann möchte aber zb. die "5" aus einer extra Textbox auslesen.
Desweiteren kann ich das die Textboxen nur Zahlen und nur max 15 zeichen (12 Zahlen + 3x den ".")
- Bearbeitet Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:47 Formatierung
-
Habe mir jetzt folgenden Code zusammengebastelt:
Wie bekomme ich jetzt zusätzlich ein "TimeOut" ergebniss in die If Abfrage ?Ping Sender = new Ping(); PingReply Result = Sender.Send("Google.de"); if (Result.Status == IPStatus.Success) { label_online.Text = ("ONLINE"); label_online.BackColor = System.Drawing.Color.Green; } else { label_online.Text = ("OFFLINE"); label_online.BackColor = System.Drawing.Color.Red; }
-
Hallo Basti,
Wenn Du den ping-Vorgang n-mal wiederholen möchtest, bietet Dir die Methode Ping.SendAsync() einen guten Startpunkt. Die Echo-Meldungen werden asynchron auf eigenen Threads ausgeführt. Ein Beispiel für die Verwendung von Ping.SendAsync() findest Du hier (zweites Codebeispiel).
Was nun Deine Eingabe-Textfelder angeht: Deine Anforderungen für die Überprüfung der IP-Adresse sind unzureichend. Sie würden auch unzulässige Adresseneingaben ermöglichen. Darum würde ich die Validität der Texteingabe im OnValidating-Ereignishandler der TextBox mittels RegEx überprüfen:
private void txtIP_Validating(object sender, CancelEventArgs e) { try { string ipv4pattern = @"\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b"; e.Cancel = !System.Text.RegularExpressions.Regex.IsMatch(txtIP.Text, ipv4pattern); } catch (ArgumentException) { //etc. } }
Die Textbox für die Anzahl der Pinganforderungen würde ich einfachheitshalber durch ein NumericUpDown-Control ersetzen (oder eine MaskedTextBox mit einer numerischen Mask).
Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:50
-
Hallo,
Indem Du Result.Status überprüfst.
PingReply-Klasse
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.pingreply.aspxIPStatus-Enumeration
http://msdn.microsoft.com/de-de/library/system.net.networkinformation.ipstatus(v=VS.100).aspxLies bitte die MSDN-Dokumentation zum Thema wenigstens einmal durch.
Gruss
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 1. Oktober 2010 10:50