2016-08-05 6 views
0

Я работаю в компании систем часов и иногда не имею доступа к маршрутизатору и другим инструментам, чтобы найти что-то в сети.Сканирование Внутренний IP-диапазон для чего-то работает на порту 9922 VBNet

Так что я сделал это, но получил ошибки. Мне нужно иметь возможность сканировать внутреннюю сеть на порте 9922, TCP.

Imports System.Net.Sockets 
Imports System.Net 
Imports System.Threading 
Imports System.Text 
Module Module1 
    Dim portStart As Integer 
    Dim portEnd As Integer 
    Dim lngPort As Long 
    Dim lngRange As Long 
    Dim txtHost1 As String 
    Dim txtHost2 As String 
    Dim txtHost As String 
    Dim openPorts As Integer 
    Dim closedPorts As Integer 
    Dim range As String 
    Dim lgnRange2 As Long 
    Sub Main() 
     Console.Write("Range Start: (For example 192.168.1.1 = 192.168.1. ") 
     range = Console.ReadLine() 

     Console.Write("Host to: Example 1 ") 
     txtHost1 = Console.ReadLine() 

     Console.Write("Host from: Example 254 ") 
     txtHost2 = Console.ReadLine() 

     Console.Write("Port: (9922 for Face Rec By default)") 
     portEnd = Console.ReadLine() 
     For lngRange = txtHost1 To txtHost2 

     Next 
     For lgnRange2 = range + lngRange 
      Dim myTcpClient As New TcpClient() 
      Try 
       myTcpClient.Connect(lngPort, portEnd) 
       Console.WriteLine("Host: " + txtHost + " : ") 
       Console.WriteLine(" Port " + lngPort.ToString() + " : Open :") 
       openPorts += 1 
       myTcpClient.Close() 
      Catch ex As SocketException 
       Console.WriteLine("Host: " + txtHost + " : ") 
       Console.WriteLine(" Port " + lngPort.ToString() + " : Closed :") 
       ' Console.WriteLine(ex.Message) 
       closedPorts += 1 
       Console.Write(" " & openPorts.ToString & " open port(s) : ") 
       Console.Write("  " & closedPorts.ToString & " closed port(s) : ") 

       Console.Beep() 
       Console.Write(txtHost + " : " + portStart.ToString + " - " + portEnd.ToString + " : Scanned Sucessfully") 

      End Try 
     Next 
    End Sub 
    Public Class psAPP 
     Public Shared Sub Main() 

     End Sub 
    End Class 
End Module 
+0

Вы должны предоставить более подробную информацию, чем «Так что я сделал это, но получаю ошибки» - какие ошибки на каких строках? Runtime или компилировать ошибки? и т. д. Просмотрите [ask] дополнительные советы. – Mark

+0

Эта строка выглядит недействительной 'Для lgnRange2 = range + lngRange'. – Mark

+0

Извините за поздний ответ, –

ответ

0

For петля нуждается в числовое начале и конце, так что вам нужно будет конвертировать txtHost1 и txtHost2 переменных целые числа. Для вызова TcpClient.Connect потребуется либо IPAddress, либо имя хоста, построенное из вашего жестко запрограммированного префикса и текущего номера хоста. Итак, ваша петля может выглядеть примерно как (непроверенная):

Option Strict On 
Option Infer On 
'... 
For i = Integer.Parse(txtHost1) To Integer.Parse(txtHost2) 
    Dim remoteAddr = IPAddress.Parse("192.168.1." & i) 
    Try 
     Using myTcpClient = New TcpClient() 
      myTcpClient.Connect(remoteAddr, Integer.Parse(portEnd)) 
     End Using 
     Console.WriteLine("Host: " + txtHost + " : ") 
     Console.WriteLine(" Port " + lngPort.ToString() + " : Open :") 
     openPorts += 1 
    Catch ex As SocketException 
     Console.WriteLine("Host: " + txtHost + " : ") 
     Console.WriteLine(" Port " + lngPort.ToString() + " : Closed :") 
     closedPorts += 1 
    End Try 
Next 
Console.Write(" " & openPorts.ToString & " open port(s) : ") 
Console.Write("  " & closedPorts.ToString & " closed port(s) : ")