vb For循环重复一定次数

时间:2013-07-16 08:42:43

标签: vb.net for-loop

所以我正在制作一个端口扫描器,并且有一个最小和最大端口,但是当它到达最大端口时无法让端口扫描器停止扫描? 我尝试在端口到达portmax时执行Exit For。

以下是代码:

Public Class Form1

Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim counter As Integer


    Button2.Enabled = False
    'set counter explained before to 0
    counter = 0
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Timer1.Tick
    Dim host As String

    Dim counter As Integer
    Dim portmin As Integer = TextBox3.Text
    Dim portmax As Integer = TextBox2.Text
    'Set the host and port and counter
    counter = counter + 1 'counter is for the timer
    host = TextBox1.Text

        For port As Integer = portmin To portmax




            ' Next part creates a socket to try and connect 
            ' on with the given user information.

            Dim hostadd As System.Net.IPAddress = _
                System.Net.Dns.GetHostEntry(host).AddressList(0)
            Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
            Dim s As New System.Net.Sockets.Socket( _
          System.Net.Sockets.AddressFamily.InterNetwork, _
        System.Net.Sockets.SocketType.Stream, _
          System.Net.Sockets.ProtocolType.Tcp)

            Try
                s.Connect(EPhost)
            Catch
            End Try


            If Not s.Connected Then
                ListBox1.Items.Add("Port " + port.ToString + " is not open")


            Else
                ListBox1.Items.Add("Port " + port.ToString + " is open")
                ListBox2.Items.Add(port.ToString)



            End If
            Label3.Text = "Open Ports: " + ListBox2.Items.Count.ToString


        Next






End Sub

Private Sub Button2_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button2.Click
    'stop button
    Timer1.Stop()
    Timer1.Enabled = False
    Button1.Enabled = True
    Button2.Enabled = False
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button1.Click
    ListBox1.Items.Add("Scanning: " + TextBox1.Text)
    ListBox1.Items.Add("-------------------")
    Button2.Enabled = True
    Button1.Enabled = False
    Timer1.Enabled = True
    Timer1.Start()
End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

End Sub

Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged

End Sub

Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged

End Sub

End Class

我真的很感激任何帮助 感谢,

2 个答案:

答案 0 :(得分:1)

尝试在扫描过程中停止计时器。

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Timer1.Enabled = False

    'Your code

    Timer1.Enabled = True
End Sub

如果问题出现并且看起来像这样,你应该考虑使用Try / Catch块:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Try
        Timer1.Enabled = False

        'Your code

    Catch ex As Exception
        'Manage the error
    Finally
        Timer1.Enabled = True
    End Try
End Sub

答案 1 :(得分:0)

试试这个

对于端口As Integer = portmin到portmax - 1