Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Вопрс по Winsock в vb6


Автор: kobolok 20.5.2009, 23:30
Задача узнать открыт ли определённый порт на определённом IP.

Пробовал вариант 1:

Код

Private Sub Command1_Click()

Adress = Text1.Text & "." & Text2.Text & "." & Text3.Text & "." & Text4.Text

Winsock1.RemoteHost = Adress
Winsock1.RemotePort = Text5.Text
Winsock1.Connect
If Winsock1.State <> sckClosed Then

Text6.Text = Adress & vbCrLf

Else

End If

End Sub

Где из
Код

Text1.Text & "." & Text2.Text & "." & Text3.Text & "." & Text4.Text
составляется IP адрес,Text5.Text номер порта,в Text6.Text записывается
IP с открытым портом.
В итоге в Text6.Text пишется люьой адрес,который сканируется.


Вариант 2:

Код

Private Sub Form_Load()
Dim w
w = ipstart(0) & "." & ipstart(1) & "." & ipstart(2) & "." & ipstart(3)
Winsock.RemoteHost = ipstart(0) & "." & ipstart(1) & "." & ipstart(2) & "." & ipstart(3)
Winsock.RemotePort = 5896
End Sub

Private Sub Start_Click()

Winsock.Connect w, 5896
If Winsock1.State <> sckClosed Then

Text1.Text = w & vbCrLf

Else

End If

End Sub

Здесь чуть намудрено с w,но смысл вроде не теряется.И используется массив.
В данном случае вообще ничего не выводится.

Если не сложно,напишите правильный вариант для одного IP по одному порту,
с выводом IP с открытым портом И/или объясните в чём ошибка.
В учебниках простого объяснения не нашёл,опыт программирования мягко говоря минимальный. 

Автор: Akina 21.5.2009, 00:01

M
Akina
Используйте тег Код!

Автор: neic 22.5.2009, 16:19
Нужно сначала узнать есть ли доступ к IP (в сети/оффлайн), и только потом проверить, есть ли открытый порт на этом IP, с помощью команды коннекта, если ошибка значит не доступен.

Автор: kobolok 23.5.2009, 01:01
Цитата
Нужно сначала узнать есть ли доступ к IP (в сети/оффлайн), и только потом проверить, есть ли открытый порт на этом IP, с помощью команды коннекта, если ошибка значит не доступен.



Как ни странно,но об этом я догадывался,и предварительно,перед тестированием проверял IP:порт на рабочем сканере.
По поводу кода кто нибудь может подсказать?

Автор: neic 23.5.2009, 12:59
Вот смотри, у Winsock'а есть событие Connect:
Код

Private Sub Command1_Click()
Winsock1.RemoteHost = Text1 & "." & Text2 & "." & Text3 & "." & Text4
Winsock1.RemotePort = text5
Winsock1.Connect
End Sub

Private Sub Winsock1_Connect() ' если событие произошло удачно, значит IP и порт доступен
Text6 = Text1 & "." & Text2 & "." & Text3 & "." & Text4 & ":" & Text5
End Sub

Автор: neic 23.5.2009, 13:16
пока твой пример делал , сделал сканер всех портов на всех IP =)

Автор: Akina 24.5.2009, 19:02
 smile Ну так и говори - сделал флудер...

Автор: neic 24.5.2009, 23:52
Akina
smile  ну я с чистой совестью, для просмотра какие порты открыты на 127.0.0.1 =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)