tcpRow.cls
上传用户:gzgold
上传日期:2013-02-21
资源大小:36k
文件大小:5k
源码类别:

多显示器编程

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "tcpRow"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  16. Option Explicit
  17. 'This code is copyright 2000 Nick Johnson.
  18. 'This code may be reused and modified for non-commercial
  19. 'purposes only as long as credit is given to the author
  20. 'in the programmes about box and it's documentation.
  21. 'If you use this code, please email me at:
  22. 'arachnid@mad.scientist.com and let me know what you think
  23. 'and what you are doing with it.
  24. 'Winapi declarations
  25. Private Declare Function SetTcpEntry Lib "IPhlpAPI" (pTcpRow As MIB_TCPROW) As Long
  26. 'property variables
  27. Private pbLocalIP(0 To 3) As Byte
  28. Private pbRemoteIP(0 To 3) As Byte
  29. Private plngLocalPort As Long
  30. Private plngRemotePort As Long
  31. Private pState As tcpStates
  32. 'Winapi structures
  33. Private Type MIB_TCPROW
  34.   dwState As tcpStates
  35.   dwLocalAddr(0 To 3) As Byte
  36.   dwLocalPort As String * 4
  37.   dwRemoteAddr(0 To 3) As Byte
  38.   dwRemotePort As String * 4
  39. End Type
  40. 'Enums
  41. Public Enum tcpStates
  42.     TCP_STATE_CLOSED = 1
  43.     TCP_STATE_LISTEN = 2
  44.     TCP_STATE_SYN_SENT = 3
  45.     TCP_STATE_SYN_RCVD = 4
  46.     TCP_STATE_ESTAB = 5
  47.     TCP_STATE_FIN_WAIT1 = 6
  48.     TCP_STATE_FIN_WAIT2 = 7
  49.     TCP_STATE_CLOSE_WAIT = 8
  50.     TCP_STATE_CLOSING = 9
  51.     TCP_STATE_LAST_ACK = 10
  52.     TCP_STATE_TIME_WAIT = 11
  53.     TCP_STATE_DELETE_TCB = 12
  54. End Enum
  55. Friend Property Let State(ByVal vData As tcpStates)
  56.     pState = vData
  57. End Property
  58. Public Property Get State() As tcpStates
  59.     State = pState
  60. End Property
  61. Public Property Get StateText() As String
  62.     Select Case pState
  63.     Case TCP_STATE_CLOSED
  64.         StateText = "Closed"
  65.     Case TCP_STATE_LISTEN
  66.         StateText = "Listening"
  67.     Case TCP_STATE_SYN_SENT
  68.         StateText = "SYN Sent"
  69.     Case TCP_STATE_SYN_RCVD
  70.         StateText = "SYN Recieved"
  71.     Case TCP_STATE_ESTAB
  72.         StateText = "Established"
  73.     Case TCP_STATE_FIN_WAIT1
  74.         StateText = "FIN Wait 1"
  75.     Case TCP_STATE_FIN_WAIT2
  76.         StateText = "FIN Wait 2"
  77.     Case TCP_STATE_CLOSE_WAIT
  78.         StateText = "Close Wait"
  79.     Case TCP_STATE_CLOSING
  80.         StateText = "Closing"
  81.     Case TCP_STATE_LAST_ACK
  82.         StateText = "Last ACK"
  83.     Case TCP_STATE_TIME_WAIT
  84.         StateText = "Time Wait"
  85.     Case TCP_STATE_DELETE_TCB
  86.         StateText = "PCB Deleted"
  87.     End Select
  88. End Property
  89. Friend Property Let RemotePort(ByVal vData As Long)
  90.     plngRemotePort = vData
  91. End Property
  92. Public Property Get RemotePort() As Long
  93.     RemotePort = plngRemotePort
  94. End Property
  95. Friend Property Let LocalPort(ByVal vData As Long)
  96.     plngLocalPort = vData
  97. End Property
  98. Public Property Get LocalPort() As Long
  99.     LocalPort = plngLocalPort
  100. End Property
  101. Friend Property Let RemoteIP(vData As Variant)
  102.     'vData is variant due to VB's stupid array rules.
  103.     Dim a As Byte
  104.     For a = 0 To 3
  105.         pbRemoteIP(a) = vData(a)
  106.     Next a
  107. End Property
  108. Public Property Get RemoteIPString() As String
  109.     'Returns the remote IP address as a string
  110.     RemoteIPString = bStr(pbRemoteIP(0)) & "." & bStr(pbRemoteIP(1)) & "." & bStr(pbRemoteIP(2)) & "." & bStr(pbRemoteIP(3))
  111. End Property
  112. Friend Property Let LocalIP(vData As Variant)
  113.     'vData is variant due to VB's stupid array rules.
  114.     Dim a As Byte
  115.     For a = 0 To 3
  116.         pbLocalIP(a) = vData(a)
  117.     Next a
  118. End Property
  119. Public Property Get LocalIPString() As String
  120.     LocalIPString = bStr(pbLocalIP(0)) & "." & bStr(pbLocalIP(1)) & "." & bStr(pbLocalIP(2)) & "." & bStr(pbLocalIP(3))
  121. End Property
  122. Public Sub Kill()
  123.     'Kills this connection.
  124.     Dim tcpThisRow As MIB_TCPROW
  125.     
  126.     tcpThisRow.dwLocalAddr(0) = pbLocalIP(0)
  127.     tcpThisRow.dwLocalAddr(1) = pbLocalIP(1)
  128.     tcpThisRow.dwLocalAddr(2) = pbLocalIP(2)
  129.     tcpThisRow.dwLocalAddr(3) = pbLocalIP(3)
  130.     
  131.     tcpThisRow.dwRemoteAddr(0) = pbRemoteIP(0)
  132.     tcpThisRow.dwRemoteAddr(1) = pbRemoteIP(1)
  133.     tcpThisRow.dwRemoteAddr(2) = pbRemoteIP(2)
  134.     tcpThisRow.dwRemoteAddr(3) = pbRemoteIP(3)
  135.     
  136.     tcpThisRow.dwState = TCP_STATE_DELETE_TCB
  137.     
  138.     tcpThisRow.dwLocalPort = lngToPort(plngLocalPort)
  139.     tcpThisRow.dwRemotePort = lngToPort(plngRemotePort)
  140.     
  141.     SetTcpEntry tcpThisRow
  142. End Sub
  143. Private Function bStr(valIn As Byte) As String
  144.     bStr = Right(Str(valIn), Len(Str(valIn)) - 1)
  145. End Function
  146. Private Function lngToPort(ByVal lngIn As Long) As String
  147.     'Converts a long port number into a C style port number
  148.     Dim lngTemp As Long
  149.     
  150.     lngTemp = Int(lngIn / 256)
  151.     lngIn = lngIn - (256 * lngTemp)
  152.     lngToPort = Chr(lngTemp) & Chr(lngIn) & Chr(0) & Chr(0)
  153. End Function