VERSION 5.00 Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX" Begin VB.UserControl AIMFilter ClientHeight = 3480 ClientLeft = 0 ClientTop = 0 ClientWidth = 4785 ScaleHeight = 3480 ScaleWidth = 4785 Begin VB.Timer Timer1 Left = 4200 Top = 2880 End Begin VB.TextBox SBYTE Height = 285 Index = 1 Left = 2040 TabIndex = 1 Text = "0" Top = 1080 Width = 615 End Begin VB.TextBox SBYTE Height = 285 Index = 0 Left = 1320 TabIndex = 0 Text = "0" Top = 1080 Width = 615 End Begin MSWinsockLib.Winsock Winsock2 Left = 2280 Top = 1440 _ExtentX = 741 _ExtentY = 741 _Version = 393216 End Begin MSWinsockLib.Winsock Winsock1 Index = 0 Left = 1320 Top = 1440 _ExtentX = 741 _ExtentY = 741 _Version = 393216 End Begin MSWinsockLib.Winsock Winsock1 Index = 1 Left = 1800 Top = 1440 _ExtentX = 741 _ExtentY = 741 _Version = 393216 End Begin VB.Image Image1 Height = 480 Left = 0 Picture = "AIMFilter.ctx":0000 Top = 0 Width = 480 End End Attribute VB_Name = "AIMFilter" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Dim TheData(3) As String, IncomingStuff(3) As String, PacketLen(3), LeftOver(3) As Boolean Dim JoMama Public Event LostConnection() Public Event IncomingPacket(TheIndex As Integer, theStuff As String) Public Event FreePort(ThePort As Integer) Public Sub DoTheCrap(TheServer, ThePort As Integer) JoMama = TheServer Winsock2.Close Winsock2.LocalPort = ThePort Winsock2.Close Winsock2.Listen End Sub Public Sub SendPacket(Index As Integer, theStuff As String, TheTimes) For i = 1 To TheTimes If Winsock1(Index).State = sckConnected Then SBYTE(Index) = SBYTE(Index) + 1 If SBYTE(Index) > 65535 Then SBYTE(Index) = 0 Mid(theStuff, 3, 2) = IntegerToBase256(SBYTE(Index)) Mid(theStuff, 5, 2) = IntegerToBase256(Len(theStuff) - 6) 'correct any length jackups Winsock1(Index).SendData theStuff Else RaiseEvent LostConnection End If Next i End Sub Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long) 'Incoming Packet Splitter/Joiner On Error Resume Next Winsock1(Index).GetData IncomingStuff(Index) 'grab new info TheData(Index) = TheData(Index) & IncomingStuff(Index) 'add it to cache NextOne: If LeftOver(Index) = False Then PacketLen(Index) = GetLength(Chr(0) & Mid(TheData(Index), 5, 2)) + 6 'grab the instruction length If PacketLen(Index) > Len(TheData(Index)) Then LeftOver(Index) = True 'make sure we don't regrab the length bytes and slow us down Exit Sub End If RaiseEvent IncomingPacket(Index, Left(TheData(Index), PacketLen(Index))) 'process the instruction TheData(Index) = Right(TheData(Index), Len(TheData(Index)) - PacketLen(Index)) 'remove it from the cache PacketLen(Index) = 0 LeftOver(Index) = False 're-enable len grabbing If Len(TheData(Index)) >= 6 Then GoTo NextOne: 'if we have the complete header of the next packet then keep going End Sub Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long) Winsock2.Close Winsock1(0).Close Winsock1(1).Close Winsock1(0).Accept requestID Winsock1(1).Connect JoMama, "5190" RaiseEvent FreePort(Winsock2.LocalPort) End Sub