Autor Beitrag
DevInet
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Fr 25.06.10 10:21 
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?



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:
32:
33:
34:
35:
36:
37:
38:
39:
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//Zusätzliche
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();                   // Ping instanzieren
            int timeout = 1000;                         // TimeOut-Zeit festlegen
            byte[] buffer = new byte[4096];             // Sende/EmpfangsBuffer, hier alles Nullen
            // Größe willkürlich auf 4k festgelegt
            PingOptions pOptions = new PingOptions();   // Optionen für Ping instanzieren
            PingReply reply;                            // Antwort des Pings deklarieren

            for (int i = 1; i >= 255; i++)  //Schleife wird durchlaufen bis bereich von 1 bis 255 gepingt wurde
            {
                // Ping an die Adresse aus der Textbox schicken
                reply = myPing.Send(iprBox.Text + "." + i, timeout, buffer, pOptions);
                // mögliche Antworten auswerten
                if (reply.Status == IPStatus.Success)
                    MessageBox.Show("Anwort in " + reply.RoundtripTime.ToString() + "ms erhalten");
            }
        }
    }
}




Vielen Dank im vorraus.

Mfg
DevInet

Moderiert von user profile iconKha: C#-Tags hinzugefügt
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 findest du wie du es richtig machst.

Gruß
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.06.10 14:21 
user profile iconDevInet hat folgendes geschrieben Zum zitierten Posting springen:
Ih bekomme allerdings keine Antworten zurück.
Du solltest dich einmal mit dem Debugger auseinandersetzen. Denn wenn du einen Haltepunkt in die Schleife gesetzt hättest oder gleich schrittweise alles durchgegangen wärst, dann hättest du gesehen, dass die Schleife nie aufgerufen wird.

Mehr dazu findest du bei Microsoft:
msdn.microsoft.com/d...ibrary/aa290881.aspx
msdn.microsoft.com/d...ibrary/4607yxb0.aspx
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 25.06.10 19:59 
Mit so einer Einstellung wirst du beim Programmier nie weit kommen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.06.10 21:11 
Ist es so schwer sich den Aufbau einer for-Schleife noch einmal anzuschauen? :roll: :autsch:
user profile iconDevInet hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
            for (int i = 1; i >= 255; i++)  //Schleife wird durchlaufen bis bereich von 1 bis 255 gepingt wurde
            {
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Di 29.06.10 19:39 
So, Fehler gefunden aber noch keinen Plan wie ich den beheben kann.

Mfg

DevInet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 29.06.10 19:50 
Du könntest uns ja verraten, was Du gefunden hast ...

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: 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.

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:
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;
//Zusätzliche
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();                   // Ping instanzieren
            int timeout = 1000;                         // TimeOut-Zeit festlegen
            byte[] buffer = new byte[32];             // Sende/EmpfangsBuffer, hier alles Nullen
            // Größe willkürlich auf 32 festgelegt
            PingOptions pOptions = new PingOptions();   // Optionen für Ping instanzieren
            PingReply reply;                            // Antwort des Pings deklarieren

            for (int i = 1; i <= 255; i++)
            {
              
//                lbl3.Text = "Gesuchte IP: " + iprBox.Text + "." + j;
                // Ping an die Adresse aus der Textbox schicken
                reply = myPing.Send(iprBox.Text + "." + j++, timeout, buffer, pOptions);
                // mögliche Antworten auswerten
                if (reply.Status == IPStatus.Success)
                    ipfBox.Items.Add(reply.Address.ToString());             
            }
        }
    }
}
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: 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