Error de transmision por socket

Iniciado por Nanoc, 28 Febrero 2010, 01:01 AM

0 Miembros y 1 Visitante están viendo este tema.

BlackZeroX

#10
yo lo decia similar a esto, solo que con un hook para verificar en cada mensaje a el form verificar el tiempo que a transcurrido en los paquetes que aun se siguen recibiendo o enviando.

http://foro.elhacker.net/programacion_vb/listview_item_and_elapse_time-t284947.0.html

o lo aplico en mi Explorador Remoto para validar conexiones  procesos de lo contrario cancelo y reinicio ese socket, hasta ahora no me causa un retardo en otras conexiones o similares.

Sangrientas Lunas!¡.
The Dark Shadow is my passion.

Nanoc

Podria ser algun problema de mi protocolo el que hace que solo reciba una parte del socket? de todos modos el valor de bytestotal en el data arrival es incorrecto y repito, no es que el error ocurra algunas veces, pasa siempre, no es una solucion detectarlo y reintentar

Espero alguna ayuda

pepepoing

 :P, espero no llegar muy tarde para una solución.  :rolleyes:

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: :silbar:

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