Vb.net vb For循环重复一定次数

Vb.net vb For循环重复一定次数,vb.net,for-loop,Vb.net,For Loop,所以我做了一个端口扫描器,有一个最小和最大端口,但是当端口扫描器达到最大端口时,不能让端口扫描器停止扫描吗? 我已尝试在端口到达portmax时退出 代码如下: 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.Enabl

所以我做了一个端口扫描器,有一个最小和最大端口,但是当端口扫描器达到最大端口时,不能让端口扫描器停止扫描吗? 我已尝试在端口到达portmax时退出

代码如下:

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
我真的很感激任何帮助 谢谢,

试试这个


对于端口为整数=端口最小值到端口最大值-1,请在扫描时尝试停止计时器

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

    'Your code

    Timer1.Enabled = True
End Sub

如果这是问题,看起来像是,你应该考虑使用Test/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

你有什么问题?您不必修改代码,只需添加这两行,一行在循环之前(
Timer1.Enabled=False
),另一行在循环之后(
Timer1.Enabled=True
)。输出为端口1未打开端口1未打开端口1未打开端口1未打开端口2未打开端口2未打开端口2未打开,因此onOk,可能是因为单击按钮时出现了计时器1.Start()。仅使用
Timer1.Enabled=True
并小心使用计时器,因为它看起来像它的。它运行了多次。在循环之后,我必须删除Timer1.Enabled=true。请小心,这是因为它执行了两次。仔细看看代码。可能计时器的默认值
.Enabled
设置为true,因此它会在按下任何按钮之前启动,也可能您在其他位置有另一个
Timer1.Start()