modNetstat.bas
上传用户:yinyu8822
上传日期:2021-04-28
资源大小:79k
文件大小:4k
开发平台:

Visual Basic

  1. Attribute VB_Name = "modNetstat"
  2. 'Download by http://www.codefans.net
  3. Option Explicit
  4. '-------------------------------------------------------------------------------
  5. 'Types and function for the ICMP table:
  6. Public MIBICMPSTATS As MIBICMPSTATS
  7. Public Type MIBICMPSTATS
  8.     dwEchos As Long
  9.     dwEchoReps As Long
  10. End Type
  11. Public MIBICMPINFO As MIBICMPINFO
  12. Public Type MIBICMPINFO
  13.     icmpOutStats As MIBICMPSTATS
  14. End Type
  15. Public MIB_ICMP As MIB_ICMP
  16. Public Type MIB_ICMP
  17.     stats As MIBICMPINFO
  18. End Type
  19. Public Declare Function GetIcmpStatistics Lib "iphlpapi.dll" (pStats As MIBICMPINFO) As Long
  20. Public Last_ICMP_Cnt As Integer 'ICMP count
  21. '-------------------------------------------------------------------------------
  22. 'Types and functions for the TCP table:
  23. Type MIB_TCPROW
  24.   dwState As Long
  25.   dwLocalAddr As Long
  26.   dwLocalPort As Long
  27.   dwRemoteAddr As Long
  28.   dwRemotePort As Long
  29. End Type
  30. Type MIB_TCPTABLE
  31.   dwNumEntries As Long
  32.   table(100) As MIB_TCPROW
  33. End Type
  34. Public MIB_TCPTABLE As MIB_TCPTABLE
  35. Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
  36. Public Declare Function SetTcpEntry Lib "IPhlpAPI" (pTcpRow As MIB_TCPROW) As Long 'This is used to close an open port.
  37. Public IP_States(13) As String
  38. Private Last_Tcp_Cnt As Integer 'TCP connection count
  39. '-------------------------------------------------------------------------------
  40. 'Types and functions for winsock:
  41. Private Const AF_INET = 2
  42. Private Const IP_SUCCESS As Long = 0
  43. Private Const MAX_WSADescription = 256
  44. Private Const MAX_WSASYSStatus = 128
  45. Private Const SOCKET_ERROR As Long = -1
  46. Private Const WS_VERSION_REQD As Long = &H101
  47. Type HOSTENT
  48.     h_name As Long        ' official name of host
  49.     h_aliases As Long     ' alias list
  50.     h_addrtype As Integer ' host address type
  51.     h_length As Integer   ' length of address
  52.     h_addr_list As Long   ' list of addresses
  53. End Type
  54. Type servent
  55.   s_name As Long            ' (pointer to string) official service name
  56.   s_aliases As Long         ' (pointer to string) alias list (might be null-seperated with 2null terminated)
  57.   s_port As Long            ' port #
  58.   s_proto As Long           ' (pointer to) protocol to use
  59. End Type
  60. Private Type WSADATA
  61.    wVersion As Integer
  62.    wHighVersion As Integer
  63.    szDescription(0 To MAX_WSADescription) As Byte
  64.    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
  65.    wMaxSockets As Long
  66.    wMaxUDPDG As Long
  67.    dwVendorInfo As Long
  68. End Type
  69. Public Declare Function ntohs Lib "WSOCK32.DLL" (ByVal netshort As Long) As Long
  70. Private Declare Function inet_addr Lib "WSOCK32.DLL" (ByVal CP As String) As Long
  71. Private Declare Function inet_ntoa Lib "WSOCK32.DLL" (ByVal inn As Long) As Long
  72. Private Declare Function gethostbyaddr Lib "WSOCK32.DLL" (Addr As Long, ByVal addr_len As Long, ByVal addr_type As Long) As Long
  73. Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal host_name As String) As Long
  74. Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
  75. Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
  76. Private Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
  77. Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
  78. Declare Function lstrlen Lib "kernel32" (ByVal lpString As Any) As Integer
  79. Private Blocked As Boolean
  80. Sub InitStates()
  81.   IP_States(0) = "UNKNOWN"
  82.   IP_States(1) = "CLOSED"
  83.   IP_States(2) = "LISTENING"
  84.   IP_States(3) = "SYN_SENT"
  85.   IP_States(4) = "SYN_RCVD"
  86.   IP_States(5) = "ESTABLISHED"
  87.   IP_States(6) = "FIN_WAIT1"
  88.   IP_States(7) = "FIN_WAIT2"
  89.   IP_States(8) = "CLOSE_WAIT"
  90.   IP_States(9) = "CLOSING"
  91.   IP_States(10) = "LAST_ACK"
  92.   IP_States(11) = "TIME_WAIT"
  93.   IP_States(12) = "DELETE_TCB"
  94. End Sub
  95. Public Function GetAscIP(ByVal inn As Long) As String
  96.   Dim nStr&
  97.     Dim lpStr As Long
  98.     Dim retString As String
  99.     retString = String(32, 0)
  100.     lpStr = inet_ntoa(inn)
  101.     If lpStr Then
  102.         nStr = lstrlen(lpStr)
  103.         If nStr > 32 Then nStr = 32
  104.         CopyMemory ByVal retString, ByVal lpStr, nStr
  105.         retString = Left(retString, nStr)
  106.         GetAscIP = retString
  107.     Else
  108.         GetAscIP = "Unable to get IP"
  109.     End If
  110. End Function