home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / AOL_Instan192209872005.psc / AIMServer.ctl < prev    next >
Text File  |  2005-03-25  |  5KB  |  159 lines

  1. VERSION 5.00
  2. Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
  3. Begin VB.UserControl AIMServer 
  4.    ClientHeight    =   3600
  5.    ClientLeft      =   0
  6.    ClientTop       =   0
  7.    ClientWidth     =   4800
  8.    InvisibleAtRuntime=   -1  'True
  9.    ScaleHeight     =   3600
  10.    ScaleWidth      =   4800
  11.    Begin MSWinsockLib.Winsock sckAIMServer 
  12.       Index           =   0
  13.       Left            =   600
  14.       Top             =   120
  15.       _ExtentX        =   741
  16.       _ExtentY        =   741
  17.       _Version        =   393216
  18.    End
  19.    Begin VB.Image imgLogo 
  20.       Height          =   480
  21.       Left            =   0
  22.       Picture         =   "AIMServer.ctx":0000
  23.       Top             =   0
  24.       Width           =   480
  25.    End
  26. End
  27. Attribute VB_Name = "AIMServer"
  28. Attribute VB_GlobalNameSpace = False
  29. Attribute VB_Creatable = True
  30. Attribute VB_PredeclaredId = False
  31. Attribute VB_Exposed = False
  32. Option Explicit
  33.  
  34. Public Event DataArrival(Index As Integer, Data As String)
  35. Public Event Connected(Index As Integer, RemoteHost As String)
  36. Public Event Disconnected(Index As Integer)
  37. Public Event SocketEvent(Index As Integer, Description As String)
  38.  
  39. Private ServerSequence() As Long
  40. Private LocalSequence() As Long
  41.  
  42. Public Function IsConnected(Index As Integer) As Boolean
  43.     If sckAIMServer(Index).State = sckConnected Then
  44.         IsConnected = True
  45.     Else
  46.         IsConnected = False
  47.     End If
  48. End Function
  49.  
  50. Public Function CloseSocket(Index As Integer)
  51.     ServerSequence(Index) = 0
  52.     LocalSequence(Index) = 0
  53.     sckAIMServer(Index).Close
  54. End Function
  55.  
  56. Public Sub SendData(Index As Integer, requestID As Double, Frame As Byte, Data As String)
  57.     If sckAIMServer(Index).State = sckConnected Then
  58.         ServerSequence(Index) = ServerSequence(Index) + 1
  59.         If ServerSequence(Index) = 65535 Then ServerSequence(Index) = 0
  60.         If Frame = 2 Then
  61.             If requestID > 0 Then
  62.                 Mid$(Data, 7, 4) = DWord(requestID)
  63.             End If
  64.         End If
  65.         sckAIMServer(Index).SendData "*" & Chr(Frame) & Word(ServerSequence(Index)) & Word(Len(Data)) & Data
  66.     End If
  67. End Sub
  68.  
  69. Public Function CreateSock() As Integer
  70.     'On Error Resume Next
  71.     Dim i As Integer
  72.     For i = 1 To sckAIMServer.UBound
  73.         If sckAIMServer(i).State <> sckConnected Then
  74.             CreateSock = i
  75.             Exit Function
  76.         End If
  77.     Next i
  78.     ReDim Preserve ServerSequence(0 To UBound(ServerSequence) + 1)
  79.     ReDim Preserve LocalSequence(0 To UBound(LocalSequence) + 1)
  80.     CreateSock = sckAIMServer.UBound + 1
  81.     Load sckAIMServer(CreateSock)
  82. End Function
  83.  
  84. Public Sub OpenServer(Port As Integer)
  85.     'On Error Resume Next
  86.     sckAIMServer(0).Close
  87.     sckAIMServer(0).LocalPort = Port
  88.     sckAIMServer(0).Listen
  89. End Sub
  90.  
  91. Public Sub CloseServer()
  92.     'On Error Resume Next
  93.     Dim i As Integer
  94.     For i = 1 To sckAIMServer.UBound
  95.         sckAIMServer(i).Close
  96.         Unload sckAIMServer(i)
  97.     Next i
  98.     ReDim Preserve LocalSequence(0)
  99.     ReDim Preserve ServerSequence(0)
  100.     sckAIMServer(0).Close
  101. End Sub
  102.  
  103. Private Sub sckAIMServer_Close(Index As Integer)
  104.     ServerSequence(Index) = 0
  105.     LocalSequence(Index) = 0
  106.     sckAIMServer(Index).Close
  107.     RaiseEvent Disconnected(Index)
  108. End Sub
  109.  
  110. Private Sub sckAIMServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  111.     'On Error Resume Next
  112.     Dim i As Integer
  113.     i = CreateSock
  114.     ServerSequence(i) = 0
  115.     LocalSequence(i) = 0
  116.     sckAIMServer(i).Close
  117.     sckAIMServer(i).Accept requestID
  118.     RaiseEvent Connected(i, sckAIMServer(Index).RemoteHostIP)
  119. End Sub
  120.  
  121. Private Sub sckAIMServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  122.     'On Error Resume Next
  123.     Dim strData As String
  124.     Dim lngLength As Long
  125. Split:
  126.     sckAIMServer(Index).PeekData strData, vbString
  127.     If Len(strData) = 0 Then Exit Sub
  128.     If Mid(strData, 1, 1) <> "*" Then
  129.         RaiseEvent SocketEvent(Index, "Non-FLAP based packet received!")
  130.         Exit Sub
  131.     End If
  132.     lngLength = GetWord(Mid(strData, 5, 2))
  133.     If bytesTotal >= lngLength + 6 Then
  134.         sckAIMServer(Index).GetData strData, vbString, lngLength + 6
  135.         RaiseEvent DataArrival(Index, Mid(strData, 1, lngLength + 6))
  136.         bytesTotal = bytesTotal - (lngLength + 6)
  137.         If bytesTotal >= 6 Then GoTo Split
  138.     End If
  139. End Sub
  140.  
  141. Private Sub sckAIMServer_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
  142.     ServerSequence(Index) = 0
  143.     LocalSequence(Index) = 0
  144.     sckAIMServer(Index).Close
  145.     RaiseEvent Disconnected(Index)
  146. End Sub
  147.  
  148. Private Sub UserControl_Initialize()
  149. 'On Error Resume Next
  150.     ReDim Preserve LocalSequence(0)
  151.     ReDim Preserve ServerSequence(0)
  152. End Sub
  153.  
  154. Private Sub UserControl_Resize()
  155. 'On Error Resume Next
  156.     UserControl.Width = imgLogo.Width
  157.     UserControl.Height = imgLogo.Height
  158. End Sub
  159.