2013-07-16 2 views
0

Итак, я делаю сканер портов и имею порт min и max, но не могу заставить сканер портов останавливать сканирование, когда он достигает максимального порта? Я попытался сделать выход, когда порт достигает portmax.vb Для циклического повтора определенное количество раз

Вот код:

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

Try для остановки таймера во время сканирования.

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

    'Your code 

    Timer1.Enabled = True 
End Sub 

Если то проблемы, и похоже, что это, вы должны рассмотреть возможность использования Try/Поймать блок:

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 
+0

могли бы вы показать мне полный код, как я у меня проблема? – Gabe

+0

Какая у вас проблема? Вам не нужно было изменять свой код, просто добавьте эти две строки, одну перед циклом ('Timer1.Enabled = False'), а другая после цикла (' Timer1 .Enabled = True'). – SysDragon

+0

выход порт 1 не открыт порт 1 не открыт порт 1 не является открытым порт 1 не является открытым порт 2 не является открытым порт 2 не является открытым порт 2 не является открытым и так далее – Gabe

0

Попробуйте

Для порта As Integer = portmin Для portmax - 1

+0

Это не работает :( – Gabe

Смежные вопросы