0

所以我正在制作一个端口扫描器并且有一个最小和最大端口,但是当它达到最大端口时不能让端口扫描器停止扫描?当端口达到 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

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

4

2 回答 2

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
于 2013-07-16T09:03:27.553 回答
0

尝试这个

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

于 2013-07-16T08:47:49.133 回答