Hola creo hay varias formas de hacerlo yo por ejemplo una forma que utilize y me fue eficiente es esta
Cita: Dim Resto As String
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Dato As String
Winsock1.GetData Dato, vbNullString
Separar (Dato)
End Sub
Sub Separar(Cadena As String)
On Error GoTo Final
Dim Dato As String
Cadena = Resto & Cadena
Resto = ""
Do Until Cadena = ""
If Len(Replace(Cadena, "t#z@", ".")) < Len(Cadena) Then
Dato = Left(Cadena, InStr(Cadena, "t#z@") - 1)
DataArrival2 (Dato)
Cadena = Right(Cadena, Len(Cadena) - Len(Dato) - 4)
Else
Resto = Cadena
Exit Sub
End If
Loop
Exit Sub
Final:
End Sub
Sub DataArrival2(dato as string)
blbalbalba
End Sub
y en el cliente enviava el dato de esta forma
Cita: Winsock1.SendData Orden & "t#z@"
otra forma es hacer enviando el dato y hacer un do wile asta que contestar el cliente o el servidor por ej:
Cita: Dim Confirma As Boolean
Sub ConfirmarEnvio()
Confirma = False
Winsock1.SendData "#Confirma#"
While Not Confirma = True 'creo un bucle hasta que confirme la llegada del paquete
DoEvents
Wend
End Sub
Private Sub Enviardato()
For i = 1 To 10
Winsock1.SendData dato(i)
ConfirmarEnvio
Next
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dato As String
Winsock1.GetData dato, vbNullString
Select Case dato
Case Is = "#Confirma#"
Confirma = True
End Sub
y en la otra parte (cliente o servidor)
Cita: Winsock1.GetData dato, vbNullString
Select Case dato
Case Is = "#Confirma#"
Winsock1.SendData "#Confirma#"
yo en ambas formas me funciona bien porque siempre tienes que tener en cuenta que una cosa, es provarlo en tu pc y otra es con dos pc donde el dato puede tardar mas o menos en llegar y de estas dos formas el dato se separa correctamente