Entwickler-Ecke
Netzwerk - Netzwerk scannen
asterix76 - Mi 04.03.09 10:23
Titel: Netzwerk scannen
Hallo, wie kann ich mein Netzwerk scannen?
Ich würde gerne mein Netzwerk scannen und die angeschlossen Geräte ermitteltn.
Ich benutze SNMP zur Device Abfrage. Ich benötige aber alle IpAdressen der angeschlossenen Geräte.
Dazu dachte ich, dass ich im Netzwerk einfach von zb. 192.168.0.1 - 192.168.0.255 alle Adressen anpinge, kommt was zurück, dann ist die IPadresse auch aktiv im Netzwerk.
Ist das richtig? Wenn jemand weiss, wie ich das besser lösen kann, sagt bitte Bescheid.
THX asterix76
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Mi 04.03.2009 um 10:50
Console.Beep() - Mi 04.03.09 11:10
Hallo und :welcome:
ich hab da keine Einwende. Mach ruhig^^
Ich hoffe du kennst die Ping Klasse im .NET, die macht es dir schön einfach
asterix76 - Mi 04.03.09 13:27
Ja das mit der Ping Klasse funktioniert, nur dauert das bie 200 Ipadressen ewig. Gibt es ne Alternative?
THX asterix
Console.Beep() - Mi 04.03.09 13:50
Ne ich glaube dafür gibt es keine bessere Lösung.
Du könntest evtl an den PingOptions rumspielen.
asterix76 - Mi 04.03.09 18:17
Was ist mit Broadcasting? Hat da jemand vielleicht Erfahrung und kann mir eventuell helfen?
asterix76 - Mi 04.03.09 19:48
Cool, danke erstmal, aber wie gebe ich die IPAdressen zum Beispiel in eine listbox aus:
Ich habe noch nicht mit listen gearbeitet und weiß daher nicht wie das hier gehen soll.
ungefähr so :
listbox_ipadressen.Items.Add("IpAdressen"+ipadresse);
thx asterix
Greenberet - Mi 04.03.09 19:50
Das Problem mit Ping-Broadcast ist, dass viele Systeme auf so einen einfach nicht antworten.
Wenn ich du wäre würde ich einfach ein Ping an jeden möglichen Client asynchron senden.
Du solltest dann spätestens nach 0.5 Sekunden alle vorhandenen Rechner im Netzwerk in deiner Liste haben.
asterix76 - Mi 04.03.09 20:10
Hallo, danke!
Kannst du mir vielleicht ein wenig helfen.
Habe jetzt das hier und das dauert leider ewig, bis er die IP Adressen in die Listbox schreibt :-(
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| private void button_ping_Click(object sender, EventArgs e) { Ping pingSender = new Ping(); PingOptions options = new PingOptions(); options.DontFragment = true; for (int lauf = 0; lauf < 255; lauf++) { int ipadresse = 0; String ip; ipadresse += lauf; ip = "192.168.2." + ipadresse.ToString(); progressBar.Maximum = 255; progressBar.Step = 1; progressBar.PerformStep(); string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 120; PingReply reply = pingSender.Send(ip, timeout, buffer, options); if (reply.Status == IPStatus.Success) { listBox_devices.Items.Add("Address: {0}" + reply.Address.ToString()); listBox_devices.Items.Add("RoundTrip time: {0}"+ reply.RoundtripTime); listBox_devices.Items.Add("Time to live: {0}" + reply.Options.Ttl); listBox_devices.Items.Add("Don't fragment: {0}" + reply.Options.DontFragment); listBox_devices.Items.Add("Buffer size: {0}" + reply.Buffer.Length); } }
} |
Moderiert von
Kha: C#-Tags hinzugefügt
Flitzs - Mi 04.03.09 22:47
Hallo,
wie mein Vorgänger bereits geschrieben hat, solltest du die Pings asynchron losschicken.
Schau dir mal die Methode
pingSender.SendAsync() an.
Zudem musst du
C#-Quelltext
1: 2:
| progressBar.Maximum = 255; progressBar.Step = 1; |
nicht in jedem Schleifendurchgang neu setzen, es reicht wenn du es einmal vor der Schleife machst.
C#-Quelltext
1: 2: 3: 4:
| int ipadresse = 0; String ip; ipadresse += lauf; ip = "192.168.2." + ipadresse.ToString(); |
kannst du auch auf
C#-Quelltext
1: 2:
| String ip; ip = "192.168.2." + lauf.ToString(); |
ändern.
mfg Flitzs
asterix76 - Do 05.03.09 12:01
Hallo, danke habe ich geänbdert.
Hat jemand eine Idee, wie man sich nur die Geräte im Netzwerk anzeigen lassen kann, die den SNMP Port (161) offen haben.
Geht das auch über einen asynchronen Ping?
THX asterix
Flitzs - Do 05.03.09 17:44
Hallo,
asterix76 hat folgendes geschrieben : |
Hat jemand eine Idee, wie man sich nur die Geräte im Netzwerk anzeigen lassen kann, die den SNMP Port (161) offen haben.
Geht das auch über einen asynchronen Ping?
|
Da Ping über das ICMP Protokoll auf Layer 3 läuft und du Ports auf Layer 4 hast, läuft Ping quasi ohne Port.
Du kannst aber versuchen auf dem Port 161 mit einem TCPClient zu connecten und sehen ob der Remothost die Verbindung annimmt (TCP Handshake) und wenn das der Fall ist, weißt du dass der Port 161 auf dem RemoteHost zumd. nicht von einer Firewall oder ähnlichem geblockt ist.
mfg Flitzs
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!