mehrere IP Adressen pingen / IP-Liste erstellen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Morrison.

    mehrere IP Adressen pingen / IP-Liste erstellen

    Hallo,

    ich wollte ein kleines Multi-Ping Programm schreiben. Jetzt stehe ich aber vor folgendem Problem:

    Wie erfasse ich die IP Adressen von z.B. im Bereich von 192.168.1.1 bis 192.168.255.255?

    Gibts da schon was fertiges von .NET? Hab zuerst versucht die letzten Zahlen hoch zu zählen und wenn die bei 255 sind wieder auf 1 zu setzen und den vorletzten eins zu zu zählen.. :huh:
    Gibts da vllt. nen Algorythmus?
    Also ich möchte die einzelnen IP´s aus einem beliebigen Bereich in einer Liste speichern..hab da auch irgend was von Byte-Konversation gelesen, aber das ist für mich höhere Mathematik..jemand nen Rat? :|
    Hallo,

    das geht z.b. so:

    VB.NET-Quellcode

    1. Dim MyPing As New System.Net.NetworkInformation.Ping
    2. Dim Myreply As System.Net.NetworkInformation.PingReply = MyPing.Send("8.8.8.8")


    Als Antwort kriegst du hier den Ping in MS.
    Du könntest also die Zahl "192.168." fixieren und die hinteren beiden Zahlen per Schleife dranhängen und durchlaufen bis du bei 192.168.255.255 bist.
    Als Anzeige könntest du dir natürlich eine Liste bauen die dir für jeden Ping ein "O.K." oder "Fehlgeschlagen" zurückgibt.

    Das einzige das mir sorgen macht ist das, dass (wenn ich mich nicht verrechnet habe) ~65000 pings sind?

    Edit: Eine Liste zu erstellen ist nicht so schwer du könntest per Textbox deine gewünschten IP-Adressen in eine Liste eintragen. ListView1.Items.Add(TextBox1.Text)
    Du hast dann auch die möglichkeit deine Liste in den Settings zu speichern damit sie bei Programmstart wieder verfügbar ist bzw. Einträge zu löschen.

    Also, Punkte die du dir ansehen solltest:

    msdn.microsoft.com/de-de/library/aa983548(v=vs.71).aspx
    msdn.microsoft.com/de-de/libra…ation.ping(v=vs.110).aspx
    Check Box. Aktiviert lassen ( da gehts um Settings speichern )
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Snaptu“ ()

    Ok, Danke!

    Wie baue ich denn am besten die Schleife auf? Ich kann ja schlecht schreiben Loop from 192.168.1.1 to 192.168.255.255.. :|

    Erstmal insgesamt die IP´s zählen?

    Und wie bewerkstellige ich zusätzlich die Prüfung etwaiger offener Ports, wie z.B. Port80?

    Mit dieser Funktion bekomme ich schonmal die Anzahl der IP Adressen wenn ich die Startadresse von der EndAdresse subtrahiere:

    Quellcode

    1. Public Shared Function IP2Int(ByVal ip As String) As Int32
    2. 'split zerteilt ip in 4 strings, die je eine Zahl darstellen
    3. 'Byte.Parse wandelt je ein Segment in ein Byte um
    4. 'Select sammelt diese Bytes in ein IEnumerable(Of Bytes)
    5. 'ToArray macht daraus ein Byte-Array
    6. Dim bytes = (From s In ip.Split("."c) Select Byte.Parse(s)).ToArray
    7. Array.Reverse(bytes) 'dreht die Reihenfolge um
    8. Return BitConverter.ToInt32(bytes, 0)
    9. End Function

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Morrison“ ()

    OK, das mit den Pings klappt jetzt, hab das gelöst indem ich die IP zu Byte konvertiere und dann in einer Schleife hochzähle und jeweils die Bytes wieder zurück zu IP konvertiere! Das Ping selbst mach ich asynchron:

    Quellcode

    1. For i = IPStart To IPEnd
    2. Dim png = New Ping
    3. AddHandler png.PingCompleted, AddressOf Ping_PingCompleted
    4. Dim sIP = IPData.Int2IP(i)
    5. png.SendAsync(sIP, 1000, sIP)
    6. Next


    Bräuchte jetzt aber nach hilfe zur Abfrage von offenen Ports der jeweiligen IP! Wer weiss da was?