Dieses Snippet scant auf einem zu definierenden System eine angegebene Portrange.
Als Ergebnis wird zurückgeliefert, ob über den Port eine Verbindung hergestellt werden kann oder nicht.
Auf einem Formular werden die n.g. Steruelemente zur Verfügung gestellt:
1 Listview Steuerelement
1 Command Button
1 Backgroundworker
Die Listview muss 3 Spaten enthalten, View sollte auf Details stehen.
Public startPort As Integer
Public endPort As Integer
Public IPAddress As String
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Try
Dim lvi As New ListViewItem(startPort)
Dim tryToConnect As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient(IPAddress, startPort)
'Es kann eine Verbindung hergestellt werden
'somit ist der Port offen
lvi.SubItems.Add("is opend")
lvi.ForeColor = Color.Red
lvi.EnsureVisible()
BackgroundWorker1.ReportProgress(0, lvi)
Catch ex As Exception
'Es kann keine Verbindung hergestellt werden
'somit ist der Port geschlossen
Dim lvi As New ListViewItem(startPort)
lvi.SubItems.Add("is Closed")
lvi.SubItems.Add(ex.Message)
lvi.ForeColor = Color.Green
BackgroundWorker1.ReportProgress(0, lvi)
End Try
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Dim lvi As New ListViewItem
'Daten vom Backgroundworker holen
lvi = e.UserState
Me.ListView1.Items.Add(lvi)
'Das akteulle ListviewItem anzeigen
lvi.EnsureVisible()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.WorkerReportsProgress = True
BackgroundWorker1.WorkerSupportsCancellation = True
IPAddress = "10.0.0.1"
startPort = 100
endPort = 110
For startPort = startPort To endPort
Me.BackgroundWorker1.RunWorkerAsync()
'Da ein Backgroundworker immer nur eine
'Aufgabe ausführen kann, warten wir hier
'bis er fertig ist und mit der nächsten
'Aufgabe weitermachen kann
While Me.BackgroundWorker1.IsBusy = True
Application.DoEvents()
End While
Next
End Sub
Kommentare zum Snippet