Simpler IP-Scanner im lokalen Netzwerk

    • VB.NET

    Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

      Simpler IP-Scanner im lokalen Netzwerk

      Hi Leute,
      Ich wollte euch hete mal einen simplen, schnellen und effektiven IP-Scanner als Konsolenanwendung (in VB 2010 geschrieben :D) vorstellen.
      Er ist nur sowas wie eine Grundlage, kann aber schnell in andere Projekte implementiert werden falls man sowas mal braucht....
      Ein Beispielprojekt findet ihr im Anhang.....

      VB.NET-Quellcode

      1. Module Program
      2. Sub Main()
      3. 'Lokale IP wird ermittelt
      4. Dim locip As String = ""
      5. For Each ip As System.Net.IPAddress In System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName)
      6. If ip.ToString.Contains(".") Then locip = ip.ToString
      7. Next
      8. 'Die ersten drei Blöcke werden in 'threeblocks' geschrieben
      9. Dim threeblocks As String = ""
      10. Dim ind As Integer = 0
      11. For Each block As String In locip.Split(".")
      12. If ind = 3 Then Exit For
      13. threeblocks &= block
      14. threeblocks &= "."
      15. ind += 1
      16. Next
      17. 'Pingwaiter Array wird erstellt un alle Items werden der Reihe nach mit ihrer Ping-IP gestartet
      18. Dim x(255) As PingWaiter
      19. Dim i As Integer = 0
      20. For Each y As PingWaiter In x
      21. y = New PingWaiter
      22. y.start(threeblocks & i)
      23. i += 1
      24. Next
      25. 'Und warten...........
      26. Console.Read()
      27. End Sub
      28. End Module
      29. 'Jetzt die Klasse die den Ping dann ausführen darf
      30. Public Class PingWaiter
      31. Private t As New Threading.Thread(AddressOf p)
      32. Private ip As String
      33. Public Structure IPInfo
      34. Public IPAddress As String
      35. Public HostName As String
      36. End Structure
      37. Public Sub start(ByVal endpoint As String) 'Aufruf zum Starten des Ping
      38. ip = endpoint
      39. t.Start()
      40. End Sub
      41. Private Sub p() 'führt den eigentlichen Ping mit 'ip' aus
      42. Dim x As New Net.NetworkInformation.Ping
      43. Try
      44. If x.Send(ip).Status = Net.NetworkInformation.IPStatus.Success Then
      45. sip()
      46. End If
      47. Catch
      48. End Try
      49. End Sub
      50. Private Sub sip() ' fasst Informationen über den Host in 'mip' zusammen und schreibt sie in der Konsole
      51. Dim mip As New IPInfo
      52. mip.IPAddress = ip
      53. mip.HostName = Net.Dns.GetHostEntry(ip).HostName
      54. If mip.HostName = "noname" Then mip.HostName = "n/a"
      55. Console.WriteLine(mip.IPAddress & " " & mip.HostName)
      56. End Sub
      57. End Class


      Fragen dazu bitte POSTEN
      Dateien
      • ipscanner.zip

        (9,78 kB, 964 mal heruntergeladen, zuletzt: )

      vbxource schrieb:

      [...] effektiven IP-Scanner [...]
      Dein Code ist aber nicht gerade schön und effektiv. For Each Schleifen nutzen und mit einer Variablen hochzählen tztz dafür gibts normale For Schleifen.
      Dann ist das zusammensetzten der ersten 3 Oktetten auch alles andere als effektiv mit einer For-Schleife, hierzu kann man zum einen RegEx oder wenn man es einfacherer haben will mit LastIndexOf() und Substring(), aber Splitten und dann in einer Schleife wieder zusammen führen, ne also das geht mal gar nicht.

      Sogar diese Lösung wäre besser als deine Lösung

      VB.NET-Quellcode

      1. Dim PartIP As String() = locip.Split(".")
      2. Dim ThreeBlocks As String = PartIP(0) & "." & PartIP(1) & "." & PartIP(2)
      3. ' oder noch sauberer
      4. Dim ThreeBlocks As String = String.Format("{0}.{1}.{2}", PartIP(0), PartIP(1), PartIP(2))


      Also wenn man schon Tutorials und Code hier anbietet sollte man doch bitte auch auf sauberen Stil achten, damit die neulinge die dies benötigen es auch gleich richtig lernen.