Autor Beitrag
asterix76
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mi 04.03.2009 um 10:50
Console.Beep()
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
BeitragVerfasst: 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

_________________
Ihr zweifelt an der Existenz der If-Schleife??? Ihr müsst nur fest daran glauben!!!
asterix76 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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()
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 04.03.09 18:17 
Was ist mit Broadcasting? Hat da jemand vielleicht Erfahrung und kann mir eventuell helfen?
Console.Beep()
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP, Ubuntu 8.10
C# (VS 2008 Exp) C++ (VS 2008 Exp)
BeitragVerfasst: Mi 04.03.09 19:14 
www.mycsharp.de/wbb2...d.php?threadid=62447

Hab das gefunden, vieleicht hilft es

_________________
Ihr zweifelt an der Existenz der If-Schleife??? Ihr müsst nur fest daran glauben!!!
asterix76 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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 :-(

ausblenden volle Höhe 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();
                // Create a buffer of 32 bytes of data to be transmitted.
                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 user profile iconKha: C#-Tags hinzugefügt
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: 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
ausblenden 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.

ausblenden C#-Quelltext
1:
2:
3:
4:
int ipadresse = 0;
String ip;
ipadresse += lauf;
ip = "192.168.2." + ipadresse.ToString();


kannst du auch auf

ausblenden C#-Quelltext
1:
2:
String ip;
ip = "192.168.2." + lauf.ToString();


ändern.

mfg Flitzs
asterix76 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Do 05.03.09 17:44 
Hallo,
user profile iconasterix76 hat folgendes geschrieben Zum zitierten Posting springen:

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