none
Auslesen der IP Adresse RRS feed

  • 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]

     

    Freitag, 24. September 2010 22:47

Antworten

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
    Samstag, 25. September 2010 06:41
    Moderator
  • 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.aspx

    Je 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.aspx

    Gruß
    Marcel

    Samstag, 25. September 2010 08:21
    Moderator
  • 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 ".")

    Samstag, 25. September 2010 13:36
  • Habe mir jetzt folgenden Code zusammengebastelt:

     

     

          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;
    
          }
    
    Wie bekomme ich jetzt zusätzlich ein "TimeOut" ergebniss in die If Abfrage ?

    Samstag, 25. September 2010 18:33
  • 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

    Samstag, 25. September 2010 18:38
    Moderator
  • Hallo,

    Indem Du Result.Status überprüfst.

    PingReply-Klasse
    http://msdn.microsoft.com/de-de/library/system.net.networkinformation.pingreply.aspx

    IPStatus-Enumeration
    http://msdn.microsoft.com/de-de/library/system.net.networkinformation.ipstatus(v=VS.100).aspx

    Lies bitte die MSDN-Dokumentation zum Thema wenigstens einmal durch.

    Gruss
    Marcel

    Samstag, 25. September 2010 19:11
    Moderator