Fragensteller
Subnetz anpingen

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
Alle Antworten
-
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 -
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
-
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 -
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