Public Enum Socket_Data RAW = 1 Bnet = 2 FTP1 = 3 FTP2 = 4 End Enum Private Buffer As String Public Function MakeDWORD(value As Long) As String Dim strReturn As String * 4 RtlMoveMemory ByVal strReturn, value, 4 MakeDWORD = strReturn End Function Public Function MakeWORD(value As Integer) As String Dim strReturn As String * 2 RtlMoveMemory ByVal strReturn, value, 2 MakeWORD = strReturn End Function Public Function InsertBYTE(Data As Integer) Buffer = Buffer & Chr(Data) End Function Public Function InsertWORD(Data As Integer) Buffer = Buffer & MakeWORD(Data) End Function Public Function InsertDWORD(Data As Long) Buffer = Buffer & MakeDWORD(Data) End Function Public Function InsertNTString(Data As String) Buffer = Buffer & Data & Chr(0) End Function Public Function InsertNonNTString(Data As String) Buffer = Buffer & Data End Function Public Sub Clear() Buffer = "" End Sub Public Property Get GetData() As String GetData = Buffer Call Clear End Property Public Property Get PeekData() As String PeekData = Buffer End Property Public Function SendBuffer(ByVal SocketHandle As Winsock, ByVal C_DATA_TYPE As Socket_Data, Optional PacketID As Integer = &H0) As Long Select Case C_DATA_TYPE Case Socket_Data.RAW Buffer = Buffer Case Socket_Data.Bnet Buffer = Chr(&HFF) & Chr(PacketID) & MakeWORD(Len(Buffer) + 4) & Buffer Case Socket_Data.FTP1 If SocketHandle.State = sckConnected Then SocketHandle.SendData MakeWORD(Len(Buffer) + 2) End If Case Else Call Clear Exit Function End Select If SocketHandle.State = sckConnected Then SocketHandle.SendData Buffer End If Debug.Print DebugOutput(Buffer) 'Lets see wtf were doing Call Clear End Function Public Function pIPDWORD(ByVal IP As String) As String Dim tmp() As String, I As Integer, Out As String tmp = Split(IP, ".") For I = LBound(tmp) To UBound(tmp) Out = Out & Chr(tmp(I)) Next I pIPDWORD = Out End Function Public Function IP_DWORD(ByRef IP As String) As Long Dim tmp() As String, I As Integer, Out As String tmp = Split(IP, ".") For I = LBound(tmp) To UBound(tmp) Out = Out & Chr(tmp(I)) Next I IP_DWORD = MakeLong(StrReverse(Out)) End Function Public Function KillNull(ByVal text As String) As String Dim I As Integer I = InStr(1, text, Chr(0)) If I = 0 Then KillNull = text Exit Function End If KillNull = Left(text, I - 1) End Function Public Function MakeLong(x As String) As Long RtlMoveMemory MakeLong, ByVal x, 4 End Function What I have so far: class Enumerate(object): def __init__(self, names): for number, name in enumerate(names.split()): setattr(self, name, number) Socket_Data = Enumerate('RAW BNET FTP1 FTP2') def MakeDWORD(value): strReturn=