Entwickler-Ecke
IO, XML und Registry - Schrittweises suchen nach IPs in einem Netzwerk.
DevInet - Fr 25.06.10 10:21
Titel: Schrittweises suchen nach IPs in einem Netzwerk.
Hallo miteinander.
Ich soll für die Schule ein Programm schreiben, mit dem ich ein Netzwerk durchsuche, indem ich das Subnetz von 1 bis 255 durchpinge.
Ih bekomme allerdings keine Antworten zurück. Kann sich jemand mal meinen Source-Code ansehen und mir weiterhelfen?
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: 32: 33: 34: 35: 36: 37: 38: 39:
| using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.NetworkInformation; using System.IO;
namespace Network_Sniffer { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void btn1_Click(object sender, EventArgs e) {
Ping myPing = new Ping(); int timeout = 1000; byte[] buffer = new byte[4096]; PingOptions pOptions = new PingOptions(); PingReply reply; for (int i = 1; i >= 255; i++) { reply = myPing.Send(iprBox.Text + "." + i, timeout, buffer, pOptions); if (reply.Status == IPStatus.Success) MessageBox.Show("Anwort in " + reply.RoundtripTime.ToString() + "ms erhalten"); } } } } |
Vielen Dank im vorraus.
Mfg
DevInet
Moderiert von
Kha: C#-Tags hinzugefügt
danielf - Fr 25.06.10 10:37
Hallo,
bitte verwende für C#-Code den Tag [cs ] oder geh über Bereiche, C# + um markierten Bereich als Code zu kennzeichnen.
Zu deinem Problem: Es kann durchaus sein, dass ein Rechner eine IP-Addresse hat aber nicht auf ein Ping-Request antwort. Die Antwort kann von einer Firewall geblockt werden. Du hast allerdings ein anderes Problem und zwar ist deine Schleife falsch programmiert.
Hier [
http://lmgtfy.com/?q=for+Schleife+C%23] findest du wie du es richtig machst.
Gruß
DevInet - Fr 25.06.10 19:38
Aber wieso wird die Schleife nie durchlaufen? WO steckt der Syntax-Fehler, oder was auch immer?
Mfg DevInet
danielf - Fr 25.06.10 19:59
Mit so einer Einstellung wirst du beim Programmier nie weit kommen.
jaenicke - Fr 25.06.10 21:11
Ist es so schwer sich den Aufbau einer for-Schleife noch einmal anzuschauen? :roll: :autsch:
DevInet hat folgendes geschrieben : |
C#-Quelltext 1: 2:
| for (int i = 1; i >= 255; i++) { | |
Also halten wir mal fest. Die Schleife soll mit i = 1 anfangen und so lange laufen wie i größer oder gleich 255 ist. Nun, jetzt die Preisfrage: Da du mit 1 anfängst, wie lange wird i wohl größer als 255 sein... :roll:
huuuuuh - Sa 26.06.10 15:16
ehrlich gesagt, is mir das auch schon passiert. als ich mit c# angefangen hab. erscheint einem jetzt zwar dumm, aber damals hab ich mich stundenlang gefragt, wo der fehler liegt. meist während ich die hilfe über for-schleifen offen hatte :oops: :autsch:
DevInet - Di 29.06.10 17:18
So, danke erstmal für die bisherige Hilfe. Leider habe ich immernoch ein Problem. Unter umständen 2
Das Programm stürzt ab, sobald es anfangen soll zu suchen. Soll heissen, die erste IP findet er noch(habs mit ner msg-Box getestet), danach hängt es sich auf.
Wenn ich nun den Task beende schmiert der komplette PC ab. Schreibt visual studio irgendwo nen fehlerberict hin? aus dem vom System werd ich in diesem Fall nicht ganz schlau.
Mfg
DevInet
DevInet - Di 29.06.10 19:39
So, Fehler gefunden aber noch keinen Plan wie ich den beheben kann.
Mfg
DevInet
Christian S. - Di 29.06.10 19:50
Du könntest uns ja verraten, was Du gefunden hast ...
DevInet - Mi 30.06.10 22:24
Also ich hab den Bluescreen wegbekommen indem ich ne zweite Variable namens J hinzugefügt habe.
Was jetzt immernoch nicht funzt ist das hochzählen von J, damit er weiterpingt bis er bei 255 ist. Momentan durchläuft er die Schleife 255 mal, pingt aber immer nur zum Beispiel "192.168.2.J", wobei J immer gleich 1 bleibt.
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: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.NetworkInformation; using System.IO;
namespace Network_Sniffer { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void btn1_Click(object sender, EventArgs e) { int j = 1;
Ping myPing = new Ping(); int timeout = 1000; byte[] buffer = new byte[32]; PingOptions pOptions = new PingOptions(); PingReply reply; for (int i = 1; i <= 255; i++) { reply = myPing.Send(iprBox.Text + "." + j++, timeout, buffer, pOptions); if (reply.Status == IPStatus.Success) ipfBox.Items.Add(reply.Address.ToString()); } } } } |
DevInet - Do 01.07.10 00:07
So, Prog ist fertig *freu* :D :D :D
Programm-Code mit Kommentaren liefer ich nach.
Danke nochmal für die Hilfe.
Mfg DevInet
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!