Autor |
Beitrag |
asterix76
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 04.03.09 10:23
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()
      
Beiträge: 43
Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
|
Verfasst: Mi 04.03.09 11:10
Hallo und
ich hab da keine Einwende. Mach ruhig^^
Ich hoffe du kennst die Ping Klasse im .NET, die macht es dir schön einfach
_________________ Ihr zweifelt an der Existenz der If-Schleife??? Ihr müsst nur fest daran glauben!!!
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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()
      
Beiträge: 43
Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
|
Verfasst: 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.
_________________ Ihr zweifelt an der Existenz der If-Schleife??? Ihr müsst nur fest daran glauben!!!
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 04.03.09 18:17
Was ist mit Broadcasting? Hat da jemand vielleicht Erfahrung und kann mir eventuell helfen?
|
|
Console.Beep()
      
Beiträge: 43
Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
|
Verfasst: Mi 04.03.09 19:14
_________________ Ihr zweifelt an der Existenz der If-Schleife??? Ihr müsst nur fest daran glauben!!!
|
|
asterix76 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
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
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: 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
|
|