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:
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!!
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.
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
pero...
no es lo que hago ya?? :huh:
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!!
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?
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)