Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Поиск серверов Winsock. (vb6) Добавлено: 09.04.10 21:45  

Автор вопроса:  oi
Как организовать поиск серверов Winsockа в vb6?
Типо порт 1234 и сканировать все IP, и в список добавлять те, которые ответили.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #1 Добавлено: 09.04.10 23:41
Порт 7 и работают только те, которые сразу отказали в коннекте.

Ответить

Номер ответа: 2
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #2
Добавлено: 10.04.10 00:48
Сканировать нужно усе АйПиз.... по маске 000.000.000.000 до 255.255.255.255 ?

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 10.04.10 11:10
Тут многопоточность нужна, это раз. И мозги, это два. Ибо сканить такой диапазон - удел дебилов) Сканим нужную подсеть и все.

Ответить

Номер ответа: 4
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #4 Добавлено: 10.04.10 12:35
Есть и примеры пинга на вб6, поищи.

Ответить

Номер ответа: 5
Автор ответа:
 oi



Вопросов: 5
Ответов: 10
 Профиль | | #5 Добавлено: 10.04.10 12:45
дайте ссылку плиз

Ответить

Номер ответа: 6
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #6 Добавлено: 11.04.10 14:16
Вариант 1 говорят роботает отлично
  1. Function PingSilent(strComputer)
  2.  
  3. Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
  4. ExecQuery("select * from Win32_PingStatus where address = '"_
  5. & strComputer & "'")
  6.             
  7. For Each objStatus in objPing
  8. If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
  9. 'WScript.Echo("Computer " & machine & " is not reachable")
  10. PingSilent = 0
  11. Else
  12.          'WScript.Echo("Computer " & machine & " is Live")
  13.          PingSilent = 1
  14. End If
  15. Next
  16.  
  17. End Function

Вариант 2
  1. Option Explicit
  2.  
  3. Const SOCKET_ERROR = 0
  4. Const MAX_IP = 10
  5.  
  6. Private Type WSAdata
  7.     wVersion As Integer
  8.     wHighVersion As Integer
  9.     szDescription(0 To 255) As Byte
  10.     szSystemStatus(0 To 128) As Byte
  11.     iMaxSockets As Integer
  12.     iMaxUdpDg As Integer
  13.     lpVendorInfo As Long
  14. End Type
  15.  
  16. Private Type Hostent
  17.     h_name As Long
  18.     h_aliases As Long
  19.     h_addrtype As Integer
  20.     h_length As Integer
  21.     h_addr_list As Long
  22. End Type
  23.  
  24. Private Type IP_OPTION_INFORMATION
  25.     TTL As Byte
  26.     Tos As Byte
  27.     Flags As Byte
  28.     OptionsSize As Long
  29.     OptionsData As String * 128
  30. End Type
  31.  
  32. Private Type IP_ECHO_REPLY
  33.     Address(0 To 3) As Byte
  34.     Status As Long
  35.     RoundTripTime As Long
  36.     DataSize As Integer
  37.     Reserved As Integer
  38.     data As Long
  39.     Options As IP_OPTION_INFORMATION
  40. End Type
  41.  
  42. Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long
  43. Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAdata As WSAdata) As Long
  44. Private Declare Function WSACleanup Lib "wsock32.dll" () As Long
  45. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
  46. Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
  47. Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As Boolean
  48. Private Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal TimeOut As Long) As Boolean
  49.  
  50. Public Function Ping(sAddr As String, Optional Timeout As Integer = 2000) As Integer
  51. Dim hFile As Long, lpWSAdata As WSAdata
  52. Dim hHostent As Hostent, AddrList As Long
  53. Dim Address As Long, rIP As String
  54. Dim OptInfo As IP_OPTION_INFORMATION
  55. Dim EchoReply As IP_ECHO_REPLY
  56.  
  57. Call WSAStartup(&H101, lpWSAdata)
  58.  
  59. If GetHostByName(sAddr + String(64 - Len(sAddr), 0)) <> SOCKET_ERROR Then
  60.     CopyMemory hHostent.h_name, ByVal GetHostByName(sAddr + String(64 - Len(sAddr), 0)), Len(hHostent)
  61.     CopyMemory AddrList, ByVal hHostent.h_addr_list, 4
  62.     CopyMemory Address, ByVal AddrList, 4
  63. End If
  64.  
  65. hFile = IcmpCreateFile()
  66.  
  67. If hFile = 0 Then
  68.     Ping = -2 ' MsgBox "Unable to Create File Handle"
  69.     Exit Function
  70. End If
  71.  
  72. OptInfo.TTL = 255
  73.  
  74. If IcmpSendEcho(hFile, Address, String(32, "A"), 32, OptInfo, EchoReply, Len(EchoReply) + 8, Timeout) Then
  75.     rIP = CStr(EchoReply.Address(0)) + "." + CStr(EchoReply.Address(1)) + "." + CStr(EchoReply.Address(2)) + "." + CStr(EchoReply.Address(3))
  76. Else
  77.     Ping = -1 ' MsgBox "Timeout"
  78. End If
  79.  
  80. If EchoReply.Status = 0 Then
  81.     Ping = EchoReply.RoundTripTime
  82. Else
  83.     Ping = -3
  84. End If
  85.  
  86. IcmpCloseHandle hFile
  87. WSACleanup
  88.  
  89. End Function

Я не проверял, смотри сам

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 11.04.10 14:18
А вот так:
  1. Public Function ComputerIsOnline(ByVal strComputerName As String) As Boolean
  2.     On Error GoTo ErrorHandler
  3.     
  4.     Dim strResult   As String
  5.     Dim ShellX      As String
  6.     Dim FileNum     As Integer
  7.     Dim lPid        As Long
  8.     Dim lHnd        As Long
  9.     Dim lRet        As Long
  10.     
  11.     'DoEvents
  12.     ShellX = Shell("command.com /c ping -n 2 " & strComputerName & " > log.txt", vbHide)
  13.     lPid = ShellX
  14.     If lPid <> 0 Then
  15.         lHnd = OpenProcess(SYNCHRONIZE, 0, lPid)
  16.         If lHnd <> 0 Then
  17.             lRet = WaitForSingleObject(lHnd, INFINITE)
  18.             CloseHandle (lHnd)
  19.         End If
  20.         FileNum = FreeFile
  21.         Open "log.txt" For Input As #FileNum
  22.         strResult = Input(LOF(1), 1)
  23.         Close #FileNum
  24.         ComputerIsOnline = (InStr(strResult, "Lost = 0") > 0)
  25.     End If
  26.     Exit Function
  27. ErrorHandler:
  28.     ComputerIsOnline = False
  29.     Exit Function
  30. End Function
делать ненадо :), но может и сработать

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам