, espero no llegar muy tarde para una solución.
utilizando el código de DarkMatrix, y modificandolo un poko puedes tomar la trama completa por partes, la idea es la misma colocar un carácter al final de la transmicion del mensaje, pero si va mas de un mensaje... o llegan mas de uno puede ser que llegue mas de un carácter de finalizacion y no tome bien la cosa, así que para asegurar de tomar solo el mensaje puedes usar el siguiente codigo:
Private Sub SockListen_DataArrival(ByVal bytesTotal As Long)
Dim Datos As String
Static Buffer As String
SockListen.GetData Datos
Buffer = Buffer & Datos
Call Comprobar(Buffer)
End Sub
Sub Comprobar(Buffer As String)
Dim Caracter As Integer
Caracter = InStr(1, Buffer, "|")
If Caracter <> 0 Then
Dim Comando As String
Comando = Left(Buffer, Caracter - 1)
Call Analizar(Comando)
Buffer = Mid(Buffer, Caracter + 1, Len(Buffer))
Call Comprobar(Buffer)
End If
End Sub
Sub Analizar(Buffer As String)
'lo que quieras hacer con la trama
End Sub