Du bist nicht angemeldet.

[VB.NET] IP-Scanner

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

1

Sonntag, 5. September 2010, 21:25

IP-Scanner

Hi Leute,
hier mal ein Beispiel, wie man einen einfachen IP-Scanner realisieren könnte. (Konsolenanwendung)

Angucken und lernen, bitte kein C&P. ;D
Wenn ich euch viel geholfen habe, könnt Ihr mich ja in einem Programm erwähnen oder Ähnliches. Der Code ist jedenfalls frei verfügbar und liegt unter der WTFPL. Mit anderen (deutschen) Worten: Macht damit, was Ihr wollt.

Er ist verbesserungswürdig, läuft aber einigermaßen gut.

Hier der Code (OOP, benutzt VB2010-Compiler (z.B. bei den inline Properties)):
 Hier klicken für weitere Informationen

Visual Basic Quellcode

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
Option Strict On

Module SimpleScanner

    Dim WithEvents __Scanner As NetworkScanner
    Dim __IPs As List(Of NetworkScanner.PingResult)

    Sub Main()
        Dim abc As String = "192.168.1"

        Console.Title = "Simpler IPScanner"
        Console.WriteLine("Simpler IP-Scanner.")
        Console.WriteLine()

        Dim args As String() = Environment.GetCommandLineArgs()
        If args.Length > 1 Then
            Dim abc_ As String = FilterMask(args(1))
            If abc_ <> "-1" Then
                abc = abc_
                Console.WriteLine("Benutze Adressbereich aus Kommandozeile: {0}", abc)
            Else
                Console.WriteLine("Der Adressbereich der Kommandozeilenargumente konnte nicht validiert werden.")
                Console.WriteLine("Benutze standard Adressbereich: {0}", abc)
            End If
        Else
            Console.WriteLine()
            Console.WriteLine("Bitte geben Sie die ersten drei Teile der IP-Adresse an. (z.B. 192.168.178)")

            Dim input As String = Console.ReadLine().Trim
            If input = String.Empty Then
                Console.WriteLine("Keine Eingabe entdeckt.")
                Console.WriteLine("Benutze standard Adressbereich: {0}", abc)
            Else
                Dim abc_ As String = FilterMask(input)
                If abc_ <> "-1" Then
                    abc = abc_
                    Console.WriteLine("Benutze eingegebenen Adressbereich: {0}", abc)
                Else
                    Console.WriteLine("Der Adressbereich konnte nicht validiert werden.")
                    Console.WriteLine("Benutze standard Adressbereich: {0}", abc)
                End If
            End If
        End If

        Console.WriteLine()
        Console.WriteLine(" Folgende IPs sind erreichbar:")
        Console.WriteLine()
        Console.WriteLine(" ###   AAA.BBB.CCC.DDD  - Hostname               - Pingzeit")

        __Scanner = New NetworkScanner(abc)
        __Scanner.Scan()

        While __Scanner.IsScanning : End While

        Dim s As String = Console.ReadLine()
        s = s.Trim
        If IsNumeric(s) Then
            Dim nummer As Integer = Integer.Parse(s)
            Dim ip_arr As NetworkScanner.PingResult() = __IPs.ToArray
            If nummer <= ip_arr.Length - 1 Then
                My.Computer.Clipboard.SetText(ip_arr(nummer).IP)
                Console.WriteLine("Die IP-Adresse ""{0}"" wurde in Ihre Zwischenablage kopiert.", ip_arr(nummer))
            End If
        ElseIf s = "a" Then
            Dim Result_arr As NetworkScanner.PingResult() = __IPs.ToArray
            Dim IP_Only_arr(__IPs.Count - 1) As String
            Dim zaehler As Integer = 0
            For Each result As NetworkScanner.PingResult In __IPs
                IP_Only_arr(zaehler) = result.IP
                zaehler += 1
            Next
            Dim clip As String = Join(IP_Only_arr, Environment.NewLine)
            My.Computer.Clipboard.SetText(clip)
            Console.WriteLine("Die IP-Adressen wurden in Ihre Zwischenablage kopiert.")
        End If
    End Sub

    Friend Function FilterMask(ByVal input As String) As String
        Dim pt As String = "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
        Dim m As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(input, pt)
        If m.Captures.Count <> 1 Then
            Return "-1"
        Else
            Return m.Value
        End If
    End Function

    Private Sub __Scanner_ScanComplete(ByVal AvailabeIPs As System.Collections.Generic.List(Of NetworkScanner.PingResult)) Handles __Scanner.ScanComplete
        __IPs = AvailabeIPs
        Dim _Counter As Integer = 0
        For Each PingResult As NetworkScanner.PingResult In __IPs
            Console.WriteLine(" {0,-3}   {1,-15}  - {2,-20}   - {3}ms", _Counter, PingResult.IP, PingResult.Hostname, PingResult.ElapsedTime)
            _Counter += 1
        Next

        Console.WriteLine()
        Console.WriteLine()

        Console.WriteLine("Scannen fertig.")
        Console.WriteLine()

        If _Counter > 0 Then
            Console.WriteLine("'a' zum Kopieren aller IPs.")
            Console.WriteLine("Eine Nummer, um eine bestimmte zu kopieren")
        Else
            Console.WriteLine("Es wurden keine IPs gefunden.") 'Unwahrscheinlich, da normalerweise mindestens der Localhost im Netz ist ^^
            'Man kann aber nie wissen.
        End If
    End Sub
End Module

Friend Class NetworkScanner
protected __MaxThreads as Integer = 20
protected __CurrentThreads As Integer = 0
    Public Property MaxThreads() As Integer
get
return __MaxThreads
end get
set (value as integer)
__MaxThreads = value
end set
end property

    Public Property CurrentThreads() As Integer
get
return __CurrentThreads
end get
set (value as integer)
__CurrentThreads= value
end set
end property


    Protected __Subnet As String
    Protected __IPList As New List(Of PingResult)
    Protected __ResultCounter As Integer

    Public ReadOnly Property IPList As List(Of PingResult)
        Get
            Return __IPList
        End Get
    End Property
    Public ReadOnly Property Subnet As String
        Get
            Return __Subnet
        End Get
    End Property
    Public ReadOnly Property IsScanning As Boolean
        Get
            Return __ResultCounter < 255
        End Get
    End Property

    Public Event ScanComplete(ByVal AvailabeIPs As List(Of PingResult))

    Public Sub New(ByVal Subnet As String)
        __Subnet = Subnet
    End Sub
    Public Sub Scan()
        For d As Integer = 0 To 255 Step 1
            Dim ping As New IPPinger(Me, String.Format("{0}.{1}", __Subnet, d))
            AddHandler ping.GotPingResult, AddressOf GotPingResult
            ping.StartPing()
        Next
    End Sub
    Private Sub GotPingResult(ByVal sender As NetworkScanner, ByVal e As PingResult)
        If e.Successful Then
            'Man könnte auch die nicht erfolgreichen adden, mache ich hier aber nicht, weil wir nur die erfolgreichen haben wollen ;)
            __IPList.Add(e)
        End If
        __ResultCounter += 1
        If __ResultCounter > 255 Then
            RaiseEvent ScanComplete(__IPList)
        End If
    End Sub

    Friend Structure PingResult
        Dim IP As String
        Dim Successful As Boolean
        Dim ElapsedTime As Long
        Dim Hostname As String
        Dim TimeOut As Integer
        Friend Sub New(ByVal _IP As String, ByVal _Successful As Boolean, ByVal _ElapsedTime As Long, ByVal _Hostname As String, ByVal _TimeOut As Integer)
            IP = _IP
            Successful = _Successful
            ElapsedTime = _ElapsedTime
            Hostname = _Hostname
            TimeOut = _TimeOut
        End Sub
    End Structure
End Class

Friend Class IPPinger
    Protected __IP As String
    Protected __Scanner As NetworkScanner
    Protected __TimeOut As Integer

    Public Shared ReadOnly Property StandardTimeOut As Integer
        Get
            Return 1000
        End Get
    End Property
    Public ReadOnly Property IP As String
        Get
            Return __IP
        End Get
    End Property

    Public Event GotPingResult(ByVal sender As NetworkScanner, ByVal e As NetworkScanner.PingResult)

    Public Sub New(ByVal _Scanner As NetworkScanner, ByVal _IP As String)
        __Scanner = _Scanner
        __IP = _IP
        __TimeOut = 1000
    End Sub
    Public Sub New(ByVal _Scanner As NetworkScanner, ByVal _IP As String, ByVal _TimeOut As Integer)
        __Scanner = _Scanner
        __IP = _IP
        __TimeOut = _TimeOut
    End Sub

    Public Sub StartPing()
        While __Scanner.CurrentThreads >= __Scanner.MaxThreads : End While
        Dim t As New Threading.Thread(AddressOf _ping_ip_thread)
        t.Name = __IP & " - Pingthread"
        t.Start(__IP)
    End Sub
    Private Sub _ping_ip_thread(ByVal _IP As Object)
        __Scanner.CurrentThreads += 1
        Try
            Dim Milliseconds As Long = Me.DoPing(_IP.ToString)
            Dim result As NetworkScanner.PingResult
            If Milliseconds <> -1 Then
                Dim HostName As String = Net.Dns.GetHostEntry(_IP.ToString).HostName
                result = New NetworkScanner.PingResult(_IP.ToString, True, Milliseconds, HostName, __TimeOut)
            Else
                result = New NetworkScanner.PingResult(_IP.ToString, False, Milliseconds, String.Empty, __TimeOut)
            End If
            RaiseEvent GotPingResult(__Scanner, result)
        Catch ex As Exception
            Throw ex 'Ja, sinnlos, ich weiß. Man könnte auch einen "Nicht-erreichbar"-Pin zurückgeben.
        Finally
            __Scanner.CurrentThreads -= 1
        End Try
    End Sub
    Private Function DoPing(ByVal _IP As String) As Long
        Dim ping As New Net.NetworkInformation.Ping
        Dim reply As Net.NetworkInformation.PingReply = ping.Send(_IP, __TimeOut)
        If reply.Status = Net.NetworkInformation.IPStatus.Success Then
            Return reply.RoundtripTime
        Else
            Return -1
        End If
    End Function
End Class




Für Fragen zu dem Code bin ich gerne offen. Diese können wie gewohnt hier gestellt werden. ;)

Habt Spaß,
nikeee

Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von »nikeee13« (9. Oktober 2010, 17:32)


singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

2

Sonntag, 5. September 2010, 21:58

Ich würd am Anfang abfragen welche IP der Benutzer hat also der Benutzer soll z.B. 192.168.178 oder 10.0.5 eingeben
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

3

Sonntag, 5. September 2010, 22:00

Ich denke nicht, dass das schwer zu implementieren wäre.
Ich packs mal schnell rein.

Edit:
So, ist drinne.
Hab Kommandozeilenargumente auch noch gleich mit rein gepackt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nikeee13« (5. September 2010, 22:24)


  • »erbse« ist männlich

Beiträge: 97

Dabei seit: 16. September 2010

Wohnort: Gotha

Hilfreich-Bewertungen: 11

  • Private Nachricht senden

4

Sonntag, 26. September 2010, 19:43

wow super code genau sowas hab ich gesuch ;)

wie bekomm ich das jetz in ne windows forms anwendung rein?
das es zb oben ein textfeld ist wo man die ersten 3 stellen der ip eingibt und dann ein button zum ausführen
und in einem weiteren textfeld die verfühbaren ips angezeigt werden?

DANKE für eure Hilfe

lg erbse

Flipez

Developer

  • »Flipez« ist männlich

Beiträge: 303

Dabei seit: 18. April 2010

Hilfreich-Bewertungen: 12

  • Private Nachricht senden

5

Sonntag, 26. September 2010, 20:16

Für eine Windows Forms anwendung musst du ihn umschreiben. da z.B die ganzen WriteLine befehle nicht verwendet werden können, du könntest die Textausgabe ja umleiten, z.B auf ein Label oder eben, wie du sagtest, auf eine TextBox in der dan die fertigen IP's stehen.

MfG

  • »erbse« ist männlich

Beiträge: 97

Dabei seit: 16. September 2010

Wohnort: Gotha

Hilfreich-Bewertungen: 11

  • Private Nachricht senden

6

Sonntag, 26. September 2010, 20:23

ja sowas in der art hab ich mir schon gedacht^^
nur ich müsste es erst einmal an einem beispiel sehen ;)
dann würde ich mich da auch rantrauen

lg erbse

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

7

Sonntag, 26. September 2010, 20:35

Da hier mit mehreren Threads gearbeitet wird, musst du bei der Ausgabe der erreichbaren IPs in z.B: einer Textbox Delegates verwenden, um in den GUI-Thread zu invoken.

Dort gibt es infos dazu:
[VB 2010] Threadübergreifend in ListBox schreiben!
http://www.codeproject.com/KB/vb/mutithr…or_beginer.aspx
http://www.espend.de/artikel/vbnet-threa…und-events.html

Ich hab es hier als Konsole hereingestellt, weil der ganze invoke-kram den Code schnell unübersichtlich machen kann. Mir ging es darum, dass man den Code leichter verstehen kann.

bigbasti

Registrierter Benutzer

Beiträge: 162

Dabei seit: 30. April 2010

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

8

Montag, 27. September 2010, 11:28

Hallo,

gibt es einen bestimmten Grund warum du ein Modul gewählt hast und keine Klasse?

Warum nicht gleich Objektorientiert arbeiten und eine Klasse erstellen, in deren Konstruktor könntest du dann auch direkt die zu scannende IP übergeben und damit die "abc" Variable befüllen (Interessanter Name übrigens...)

Module sind ein Relikt und sollten nach Möglichkeit nicht mehr verwendet werden.

Desweiteren könnte man so ganz einfach eine Instanz dieser Klasse in anderen Klassen/Anwendungen benutzen.
Siehe Polymorphie.
MfG, Sebastian Gross

Meine Homepage: www.bigbasti.com
Mein Bolg: blog.bigbasti.com
Twitter: bigbasti

Memo

User 8219

  • »Memo« ist männlich

Beiträge: 784

Dabei seit: 30. März 2010

Hilfreich-Bewertungen: 53

  • Private Nachricht senden

9

Montag, 27. September 2010, 15:30

Ich sehe in deinem Blog nicht ein warum Ich kein Modul verwenden sollte.
Wenn ich nicht nach OOP programmiere... ist das wirklich so schlimm?
Und vielleicht hab ich auch was dagegen das meine Module weiterverwendet werden...

Der Beitrag unter mir enthält einen Gegenbeweis<--- markieren wen es interessiert ^^
FileSpy 1.2 - Herausfinden, wo Programme ihre Daten speichern! Zum Download

  • »erbse« ist männlich

Beiträge: 97

Dabei seit: 16. September 2010

Wohnort: Gotha

Hilfreich-Bewertungen: 11

  • Private Nachricht senden

10

Montag, 27. September 2010, 15:44

ich wollt eig nur fragen wie ich das jetz in einer windows forms anwendung packe xD
sodas die IP ausgabe in einer textbox ist xD

lg

bigbasti

Registrierter Benutzer

Beiträge: 162

Dabei seit: 30. April 2010

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

11

Montag, 27. September 2010, 18:19

Ich sehe in deinem Blog nicht ein warum Ich kein Modul verwenden sollte.
Dann solltest du den Beitrag vielleicht noch ein paar mal durchlesen

Zitat

Wenn ich nicht nach OOP programmiere... ist das wirklich so schlimm?
Ja, denn VB.NET ist eine Objektorientierte Sprache und sollte auch so genutzt werden, wenn du nicht nach OOP programmieren möchtest dann kannst du ja weiterhin VB6 nutzen.
OOP Hat sehr viele Vorteile, die zb erbse hätte nutzen können, da er dann die Klasse sehr einfach weiter verwenden hätte können.

Zitat

Und vielleicht hab ich auch was dagegen das meine Module weiterverwendet werden...
Wenn du was dagegen hast, dass deine Module, weiter verwendet werden dann solltest du diese nicht im Sourcecode Austausch posten ?(
Wenn man schon seinen Code postet sollte man schon gucken, dass dieser auch sauber und verständlich ist, damit andere Leute dort durchfinden können, und ganau das bringt OOP mit sich, denn Namen wie "abc" helfen niemandem beim Verstehen.
MfG, Sebastian Gross

Meine Homepage: www.bigbasti.com
Mein Bolg: blog.bigbasti.com
Twitter: bigbasti

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

12

Montag, 27. September 2010, 18:28


denn Namen wie "abc" helfen niemandem beim Verstehen.

Abc steht für die Bytes der IP. A.B.C.D. (bezogen auf die IP-Abschnitte des Netzwerks)
Der underscore am Ende der Variable abc_ steht bei meinem Stil immer dafür, dass die Variable von einem Input kommt und noch auf die Gültigkeit geprüft werden muss, bevor man sie in die Variable abc übergibt.
Wobei ich in meinem Code von einem Netzwerk mit der Subnetmaske 255.255.255.0 ausgehe.

Ich verwende ein Modul, weil ich einfach alles in eine Konsolenanwendung herein geschrieben habe. Ich kann auch noch eine komplett-OOP-Variante dazu schreiben.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »nikeee13« (27. September 2010, 19:00)


  • »erbse« ist männlich

Beiträge: 97

Dabei seit: 16. September 2010

Wohnort: Gotha

Hilfreich-Bewertungen: 11

  • Private Nachricht senden

13

Montag, 27. September 2010, 18:39

ähm ok also ist dieser code da oben für einen anfänger praktisch nich verwendbar? oder wie darf ich das jetz verstehen

lg

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

14

Montag, 27. September 2010, 19:40

Hab nun eine OOP-Variante nachgetragen. Ist nicht die beste Methode, aber ich hab gerade nicht viel Zeit. Übermorgen 4stündige Matheklausur. ^^

bigbasti

Registrierter Benutzer

Beiträge: 162

Dabei seit: 30. April 2010

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

15

Montag, 27. September 2010, 22:28

Hallo Nikeee13,

der neue Code sieht doch schon um einiges besser aus, ist zwar immer noch ein Modul drin, aber gut ;-)

Ein kleiner Hinweis (optional) könntest du den Code noch weiter verfeinern, indem du ihn komplett unabhängig von der Applikationsform machst, also so, dass man ihn aus einer Forms, Consolen und auch aus einer Webanwendung nuten kann. Momentan ist dein Code immer noch sehr start von der main-Methode abhängig.

Ein komplett OOP- und unabhängiger Code könnte dann so aufgerufen werden:


Private Sub Button1_Click()
Dim scanner As NetworScanner = New NetworkScanner("ipbereich")
Dim ergebnis As String = scanner.Run() 'oder irgendwas so in der art
TextBox1.Text = ergebnis
End Sub


Mit anderen Worten der Benutzer sollte es später so einfach wie möglich haben :-) - damit würdest du Erbse jedenfalls sehr helfen glaube ich ;-)

Du kannst natürlich die Variablen so nennen, wie du es am besten verstehst, ist ja auch völlig normal so, aber wenn man den Code veröffentlicht, will man normalerweise, dass auch andere damit arbeiten.
Den anderen Menschen kann man das enorm erleichtern, in dem man aussagekräftige Namen verwendet, oder Kommentare in den Code einbaut.
MfG, Sebastian Gross

Meine Homepage: www.bigbasti.com
Mein Bolg: blog.bigbasti.com
Twitter: bigbasti

  • »erbse« ist männlich

Beiträge: 97

Dabei seit: 16. September 2010

Wohnort: Gotha

Hilfreich-Bewertungen: 11

  • Private Nachricht senden

16

Montag, 27. September 2010, 22:35

jab auf jeden fall ;) naja gut mach dir erst mal wegen deiner prüfung um den code keine waffel
das kann man auch danach noch machen

lg erbse

Mono

Registrierter Benutzer

  • »Mono« ist männlich

Beiträge: 1 386

Dabei seit: 20. April 2009

Wohnort: Dresden

Hilfreich-Bewertungen: 60

  • Private Nachricht senden

17

Dienstag, 28. September 2010, 01:56

HI Nikeee,


offensichtlich hat dich unsere kurze Diskussion angeregt.
Leider muss ich sagen, mir gefällt dein Code nicht sonderlich.
Du ermöglichst keine einachen Erweiterungen (zB Pingoptionen, variabler IP Bereich, Rückgabe von Pingzeiten,PC Namen auslesen etc). Du benutzt My.Network.Ping.
Du implementierst es fest in eine Konsolenanwendung.

Für einen simplen Massping vll kein schlechter Anfang, aber mehr auch nicht.
Ich bleibe dabei. Ein vernünftiger Netzwerkscanner ist keine Anfängersache.

Verbessere deinen Code noch(Siehe Hinweise von Vorrednern), dann kann man damit wirklich was anfangen.
Ach, und Erläuterungen im Code wären schön..zumindest einige wenige...

gruss Mono


Das ist meine Signatur und sie wird wunderbar sein!

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

18

Dienstag, 28. September 2010, 13:58

Für einen simplen Massping vllt. kein schlechter Anfang, aber mehr auch nicht.
Mehr soll es auch nicht sein.

Du implementierst es fest in eine Konsolenanwendung.
Soll ich es etwa als Classlibrary bereitstellen? Man kann sich ja auch die Klassen in eine Forms-Anwendung packen. Die Verwendung bleibt die gleiche.

Ich bleibe dabei. Ein vernünftiger Netzwerkscanner ist keine Anfängersache.
Ein vernünftiger Scanner kann ebenso ein simpler Scanner sein. Du meinst wahrscheinlich einen umfangreicheren. Naja, ich wollte nur ein Beispiel geben, wie man es mit Multithreading machen könnte. Wer dann noch Sachen wie eine Subnetzmaske haben will, muss sich das selbst implementieren. Mir ging es hier um den Ansatz. (Deshalb auch den Ping aus dem My-Namespace)

Verbessere deinen Code noch(Siehe Hinweise von Vorrednern), dann kann man damit wirklich was anfangen.
Primär geht es nicht um den praktischen Nutzen des Scanners, sondern um die Methode. (siehe einen Quote weiter oben)

Ach, und Erläuterungen im Code wären schön..zumindest einige wenige...
Kann ich machen, schreibe morgen jedoch 4 Stunden lang Mathe, hab gerade besseres zu tun. ^^

z.B. Pingoptionen, variabler IP Bereich, Rückgabe von Pingzeiten,PC Namen auslesen etc)
Lässt sich alles leicht implementieren, da jetzt auch eine OOP-Variante vorliegt. Mal schauen, ob ich noch was dazu mache.

Edit:
hab den Code noch mal etwas verbessert/ausgeweitet.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »nikeee13« (28. September 2010, 15:23)


  • »erbse« ist männlich

Beiträge: 97

Dabei seit: 16. September 2010

Wohnort: Gotha

Hilfreich-Bewertungen: 11

  • Private Nachricht senden

19

Donnerstag, 30. September 2010, 01:01

und wie war deine prüfung xD
ich habs immer noch nich in ne form bekommen immer is irgend was falsh omg

lg erbse

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich
  • »nikeee13« ist der Autor dieses Themas

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

20

Donnerstag, 30. September 2010, 13:50

Hab 16 Seiten geschrieben. ^^ Ziemlich heftig.

Welche Fehler kommen bei der Portierung auf die Forms-anwendung?

Verwendete Tags

einfach, geht besser, IP, Scanner

Social Bookmarks