#1 10. April 2010 2008 IP scanner Also ich wollte mir ein programm schreiben was IP scannt... das klappt ja auch aber es ist so langsamm das ich mir dachte mit threads müsste es schneller gehen.... Hier mein Code Code: Imports System.Threading, System.Net.Sockets, System.IO Public Class Form1 Public Sub scannen(ByVal ip, ByVal port) Dim objDateiMacher As System.IO.StreamWriter objDateiMacher = New StreamWriter("out.txt", True) Dim blacklist As System.IO.StreamWriter blacklist = New StreamWriter("blacklist.txt", True) Try Dim check As New System.Net.Sockets.TcpClient() check.Connect(ip, port) If check.Connected Then objDateiMacher.WriteLine(ip + ":" + port) End If 'MessageBox.Show(ip + ":" + port) Catch ex As Exception blacklist.WriteLine(ip + ":" + port) End Try blacklist.Close() objDateiMacher.Close() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ansatz As String = "85.13.160." Dim port As String = 80 For i As Integer = 1 To 255 Dim ip As String = ansatz + i.ToString scannen(ip, port) Next End Sub End Class Wie bekomme ich das jetzt mit multithreading hin?? weil die variablen müssen ja auch übergeben werden.... + Multi-Zitat Zitieren
#2 10. April 2010 AW: 2008 IP scanner Mit der ParameterizedThreadStart Klasse kannst du angeben welche Funktion (bzw der Delegat) gestartet werden soll und welche Parameter übergeben werden. Man kann nur einen Parameter vom Typ Object übergebn. D.h. du schreibst dir vielleicht ein Struct oder so, welches nur IP und Port enthält und castest es nach der Übergabe wieder in den richtigen Typ. Willst du eine IP nach mehreren Ports abscannen oder mehrere IPs nach dem gleichen Port? Ich würde dann entweder alle Ports oder alle IPs in eine Queue packen und jeder Thread nimmt sich dann von der Queue den ersten Port oder die erste IP und führt seine Operation aus. Wichtig ist, dass du während des Zugriffs alle anderen Threads sperrst. greez // ParameterizedThreadStart-Delegat (System.Threading) + Multi-Zitat Zitieren
#3 10. April 2010 AW: 2008 IP scanner ich will alle ips nach einen port abscannen..... wie geht das mit dem was du meintest...`? hab davon noch nie gehört ^^ + Multi-Zitat Zitieren
#4 10. April 2010 AW: 2008 IP scanner Hast du dich denn schonmal mit Threading beschäftigt und weißt wie das grob funktioniert? Das wäre sicher hilfreich. Mit .Net ist das recht gut zu regeln. Galileo Computing :: Visual Basic 2005 Wo bekommst du denn die ganzen IPs her? Liest du die aus ner Datei, legst du eine Range fest? Die packst du dann alle in eine Queue. Dann schreibst du eine Funktion, welche die Threadfunktion wird, welche also von jedem Thread ausgeführt wird. Diese Funktion besteht aus einer endlosschleife, die erst checkt, ob die Queue leer ist und bricht dann ab und wenn nicht, dann werden alle laufenden Threads gesperrt und es soll das erste Element aus der Queue rausgenommen und gescannt werden. Zu dem Sperren der Threads kannst du hier schauen: Galileo Computing :: Visual Basic 2005 Da geht es um ein Mutex, mit dem du einem Thread exklusive Zugriffsrechte auf Objekt einräumst, falls nicht schon ein anderes Objekt drauf zugreift. Ich denke, dass dir das schon weiterhelfen sollte, wenn du dich ein wenig reinarbeitest. greez + Multi-Zitat Zitieren