Если ты собрался делать сканер IP портов на VB6, то это не так уж сложно.
Для начало запусти VB6. Кинь на форму 4 текстовых поля, 1 кнопку, и компонент Winsock(Проект>Компоненты, и поставь галочку на Microsoft Winsock Control 6) жми на ОК. Теперь выбери текстовое поле Text1 и измени следующие свойства:
Name: txtHost, Width: 2415, Height: 285, Left: 240, Top: 240, Text=””
Свойства Text2 сделай:
Name: txtPortEnd, Width: 855, Height: 285, Left: 4080, Top: 240, Text=””
Свойства Text3:
Name: txtPortStart, Height: 285, Width: 855, Left: 3120, Top: 240, Text=””
Свойства Text4:
Name: FoundPorts, Height: 2175, Width: 6735, Left: 240, Top: 720, MultiLine=True, Scrollbars=2-Вертикаль, Text=””
Имя кнопки пускай останется таким как есть, измени только свойство Caption= Start
У Winsock’a измени свойство Name= Sock, а значение Index=0
Теперь осталось закончить работу с кодом, вот он:
Private Sub Command1_Click()
Dim Socket As Variant
Dim CurrentPort As Integer
Const MaxSockets = 100
On Error Resume Next
If Command1.Caption = "Start" Then
txtHost.Enabled = False
txtPortStart.Enabled = False
txtPortEnd.Enabled = False
Command1.Caption = "Stop"
For i = 1 To MaxSockets
Load Sock(i)
Next i
CurrentPort = txtPortStart.Text
While Command1.Caption = "Stop"
For Each Socket In Sock
DoEvents
If Socket.State <> sckClosed Then
GoTo continue
End If
Socket.Close
If CurrentPort = Val(txtPortEnd.Text) + 1 _
Then Exit For
Socket.RemoteHost = txtHost.Text
Socket.RemotePort = CurrentPort
Socket.Connect
CurrentPort = CurrentPort + 1
continue:
Next Socket
Wend
Command1.Caption = "Start"
txtHost.Enabled = True
txtPortStart.Enabled = True
txtPortEnd.Enabled = True
Else
Command1.Caption = "Start"
End If
For i = 1 To MaxSockets
Unload Sock(i)
Next i
End Sub
Private Sub FoundPorts_Change()
FoundPorts.SelStart = Len(FoundPorts.Text)
End Sub
Private Function AddPort(Port As Integer)
FoundPorts.Text = FoundPorts.Text & "[Connected] Port " & Port & vbCrLf
End Function
Private Sub Sock_Connect(Index As Integer)
AddPort (Sock(Index).RemotePort)
Sock(Index).Close
End Sub
Private Sub Sock_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Sock(Index).Close
End Sub
После, запусти свой проект, в текстовом поле имя которого txtHost, введи свой IP Adress.
В текстовом поле txtPortStart введи значение 1, а в текстовом поле txtPortEnd, введи значение 65536. И жми на кнопку Start.
Ответить
|