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