- Код: Выделить всё
MsgBox "Компьютер в сети", vbOK , "Подключиться"
А если неподключен, то соответсвенный MsgBox показать.
MsgBox "Компьютер в сети", vbOK , "Подключиться"
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim Winsock As Object
Dim WinSockState(9) As String
Private Sub Form_Activate()
Set Winsock = CreateObject("MSWinsock.Winsock.1")
WinSockState(0) = "sckClosed 0 Default. Closed"
WinSockState(1) = "sckOpen 1 Open"
WinSockState(2) = "sckListening 2 Listening"
WinSockState(3) = "sckConnectionPending 3 Connection pending"
WinSockState(4) = "sckResolvingHost 4 Resolving host"
WinSockState(5) = "sckHostResolved 5 Host resolved"
WinSockState(6) = "sckConnecting 6 Connecting"
WinSockState(7) = "sckConnected 7 Connected"
WinSockState(8) = "sckClosing 8 Peer is closing the connection"
WinSockState(9) = "sckError 9 Error"
Connect "http://www.ya.ru", "80"
Connect "http://www.google.ru", "80"
Connect "127.0.0.1", "80"
End Sub
Function Connect(HostName, port)
Winsock.Close
Winsock.Connect HostName, port
Print "Connecting to " & HostName & " on port=" & port
Do
Print WinSockState(Winsock.State)
Select Case Winsock.State
Case 4, 5, 7, 8, 9
Exit Do
Print vbCrLf
End Select
Sleep 100
DoEvents
Loop
End Function
Хакер , поясните , почему нельзя использовать winsock и "мониторить" состояние порта, вместо пинга.
Работает. Но есть одна проблема. Мне надо проверять статус не одного , а около сотни ! компов. Вобщем задаю список IP адресов, заношу этот код в цикл, и по очереди пингую весь список, результат заношу в таблицу. Так вот , если комп не отвечает, то программка как бы подвисает , на несколько секунд, а если не отвечает подряд 10-20 машин , то создается впечатление что программка зависла, хотя это не так.
Сейчас этот форум просматривают: Google-бот и гости: 116