none
Subnetz anpingen RRS feed

  • Frage

  • hallo,

    um herauszufinden, in welchen subnetz ich mich befinde(wenn ich selbst eine IP erhalte in dem Subnetz), habe ich schon hinbekommen mit dem
    folgenden code.
    Nun habe ich jedoch das Problem, dass an dem PC, an den ich mich verbinde es 2 netzwerkkarten gibt... dadurch bekommt immer mein laptop die
    IP 10.0.0.2 und somit kann ich meinen code nicht benutzen.
    ich möchte gerne ein komplettes Subnetz zbsp 10.14.212.x anpingen. habe nur hierfür noch keine möglichkeit gefunden. vielleicht könnt ihr mir weiterhelfen?
            Dim ips As IPAddress() = Dns.GetHostEntry("127.0.0.1").AddressList
            For Each ip In ips
                Debug.Print("ip: {0} {1}", ip, ip.AddressFamily)
                If ip.AddressFamily = Sockets.AddressFamily.InterNetwork Then
                    Select Case True
                        Case ip.ToString.StartsWith("10.14.212.") : TextBox1.Text = ("Subnetz : A") : Exit For
                        Case ip.ToString.StartsWith("10.14.215.") : TextBox1.Text = ("Subnetz : B") : Exit For
                        Case Else : TextBox1.Text = ("Zuordnung fehlgeschlagen")
                    End Select
                End If
            Next

    Dienstag, 20. März 2012 16:52

Alle Antworten

  • Hallo zusammen, ich wollte mal nachfragen, ob vielleicht jemand ein idee hat mein problem zu lösen, da ich immer noch nicht weiter bin in dem thema...

    Samstag, 15. September 2012 16:28
  • Hallo,

    also ich bin ehrlich gesagt nicht ganz schlau aus Deinem Code geworden. 1:1 kopiert und probiert, jedoch spuckt der code dann immer die Localhost Adresse aus. Ich habe den Code mal wie folgt umgeschrieben, damit ich alle IPv4 Adressen der am lokaln PC vorhandenen Netzwerkkarten erhalte.

            Dim strHostName As String = System.Net.Dns.GetHostName()
            Debug.Print(strHostName)
            Dim ipadr As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(strHostName)
    
            For Each ip As System.Net.IPAddress In ipadr.AddressList
                Debug.Print("ip: {0} {1}", ip, ip.AddressFamily)
                If ip.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Then
                    Debug.Print(ip.ToString())
    
                    If ip.ToString.StartsWith("10.14.212.") Then
                        TextBox1.Text = ("Subnetz : A")
                    ElseIf ip.ToString.StartsWith("10.14.215.") Then
                        TextBox1.Text = ("Subnetz : B")
                    Else
                        TextBox1.Text = ("Zuordnung fehlgeschlagen")
                    End If
    
                End If
            Next

    Was möchtest Du nun genau machen?

    Viele Grüße
    Okeanos85

    Sonntag, 16. September 2012 01:19
  • Danke Okeanos, dass du geantwortet hast. 

    Den Code von mir hättest du jedoch nicht umschreiben müssen, da dieser nur die lokale IP-Adresse abfragt. Die lokale IP zuvergleichen bringt aber nichts, da meine IP immer die 10.0.0.2 ist.

    Ich brauche jedoch einen Code, mit welchen ich eine IP oder besser gesagt nur den ersten Teil einer IP (10.14.212.) anpingen kann.

    Viele Grüße

    Witcher


    • Bearbeitet witcher7 Sonntag, 16. September 2012 11:06
    Sonntag, 16. September 2012 09:06
  • Hallo,

    also möchtest Du prüfen ob ein Subnetz verwendet wird... ein Ping funktioniert nur bei vollständiger Adressierung, außer Du sendest einen ICMP Broadcast, der pingt alle geräte in dem Subnetz an und fragt nach aktiv sein.

    Viele Grüße
    Okeanos85

    Sonntag, 16. September 2012 16:16
  • Hallo,

    es gibt es unter Windows keine Möglichkeit einen Broadcast via Ping auszuführen. Das einfachste wäre Tools einzusetzen: How can I ping a range of IP addresses simultaneously

    Willst du es nachprogrammieren, so musst Du den Adress-Bereich selbst abklappern, ggf. mit mehreren (Background-)Threads.

    Um die Netzwerk-Interfaces zu erhalten siehe z. B.: how to enumerate different network adapters using c#

    Solche Scans sind i. a. nicht besonders beliebt - siehe auch die Anmerkungen oben (angryip wird gerne mal von Virenscannern "bereinigt") - also solltest Du das auf Dein lokales Netzwerk beschränken.

    Gruß Elmar

    Sonntag, 16. September 2012 18:33
    Beantworter