Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Psyke1 en 22 Marzo 2010, 18:25 pm



Título: (ayuda) enviar archivos vb6
Publicado por: Psyke1 en 22 Marzo 2010, 18:25 pm
Hola a to2!! les cuento mi problema:

Estoy intentando descargar un archivo remoto y que me muestre su progreso en una progressbar. Pero algo debo
de hacer mal, y no tengo muy claro para poner el progreso la PB.
No puede ser muy dificil, lo que hago actualmente es:
Código:

CLIENT

Private Sub Download_Click()  

    WS.SendData "download" & Ruta.Caption

End Sub


SERVER

    If Left(datos, 8) = "download" Then
    datos = Mid(datos, 9)

   tamaño = FileLen(datos)

   WS.SendData "dtam" & tamaño

    End If


CLIENT

    If Left(datos, 4) = "dtam" Then
    datos = Mid(datos, 5)

   PB.Max = datos
   'MsgBox PB.Max

  WS.SendData "dok" & Ruta.Caption
 
   End If


SERVER


    If Left(datos, 3) = "dok" Then
    datos = Mid(datos, 4)

    'aki debe de estar el fallo
  Dim filedata As String

    Open datos For Binary As #1
    filedata = Input(LOF(1), 1)
  Close #1

    WS.SendData "dongo" & filedata

    End If


CLIENT


    If Left(datos, 6) = "downgo" Then
    datos = Mid(datos, 7)

   Open App.path & "\miArchivo" For Binary As #1
   Put #1, , datos
   Close

     MsgBox "descarga completada"

    End If

Agradeceria mucho cualquier ayuda!!
Gracias amigos!!


Título: Re: (ayuda) con cmd en vb6
Publicado por: tkows en 22 Marzo 2010, 18:39 pm
Mira, puedes jugar con el evento SendProgress para saber el progreso del archivo (Lo que haces no tiene mucho sentido pues le estas enviando constantemente el valor de los datos recibidos y se lo estableces al máximo. Podrías hacer que antes de enviar el archivo mirase la longitud de este, le asignas ese valor máximo a la barra y como lo haces ahora pero cambiandole el valor .value no el .max.)

Si quieres mirar lo del evento SendProgress: Aquí (http://foro.elhacker.net/programacion_vb/introduccion_al_control_winsock_en_vb-t17665.0.html) tienes un buen código de ejemplo.

Un saludo.


Título: Re: (ayuda) enviar archivos vb6
Publicado por: Nanoc en 23 Marzo 2010, 18:58 pm
Supongo que para enviar el archivo el cliente (cuando lo recibe) tiene que conocer el tamaño del archivo que va a recibir, en ese caso, cuando recibas una parte del archivo (en el evento data arrival) coloca un contador (definido como global ojo) y ve agregandole el valor de BytesTotal que te proporciona winsock, usa el control progress bar que viene con VB6 y colocale como maximo el tamaño de archivo y los valores de progreso del contador que definiste.

Si tienes problemas dimelo y te paso parte del code del cliente de mi troyano en curso


Título: Re: (ayuda) enviar archivos vb6
Publicado por: Psyke1 en 25 Marzo 2010, 12:35 pm
pero...
no es lo que hago ya?? :huh:

Código:
1.-el cliente envia el nomgre y ruta del archivo
2.-el server calcula el tamaño y se lo envia al client
3.-el cliente establece el maximo de la PB con los Bytes del archivo y pide iniciar descarga
4.-el server abre el archivo y lo envia
5.-el client lo recive y lo guarda

keda lo del PB pero deberia funcionar igual, no???
perdonarme pero sigo sin ver el fallo... :-(

gracias por la ayuda!!


Título: Re: (ayuda) enviar archivos vb6
Publicado por: Nanoc en 25 Marzo 2010, 23:22 pm
Parto de la base de que la descarga del fichero funciona bien y lo que falla es la barra de progreso

No has pensado que hay que actualizar el valor de la barra cada vez que se reciba una parte del archivo?
Código:
brcounter = brcounter + bytesTotal
PB.Value = brcounter

Donde brcounter almacena la cantidad de bytes recibidos (deberias de tener algo parecido en tu code, pero no lo veo)