Hola a todos...
Estoy haciendo un downloader y necesito saber de que manera puedo medir los Kb/s (Velocidad de descarga) va el archivo... Osea, si estoy descargando un archivo de 1 MB, mi idea es que marque a la velocidad que va (Por ejemplo, 100 Kb/s y faltan x:xx:xx (Tiempo))
Tambien quisiera saber si hay alguna forma de crear archivos .EXE, busque en esta sección sobre como crearlos, pero al final no lo encontre...
Agradeceria su ayuda :P, ya que esto es para un proyecto en mi instituto.... asias...
mira esta es parte de un código que hice para descargar archivos de un ftp, aqui voy mostrando el avance de descarga que lleva el archivo, se me ocurre que si yo llevo la cuenta de bytes descargados con "Len(vtData)" tal vez puedas sacar cuantos bytes se descargan por segunto, y por consiguiente cual sería el tiempo restante de la descarga.
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant 'acá almacenamos los datos
Dim prog As Double, filesize As Long, contenttype As String
On Local Error GoTo linea1
Select Case State
Case icError ' 11
' En caso de error, devuelve ResponseCode y ResponseInfo.
vtData = Inet1.ResponseCode & ":" & Inet1.ResponseInfo
Case icResponseCompleted
Dim bDone As Boolean: bDone = False
Dim tempArray() As Byte ' Un array para grabar los datos en un archivo
'Para saber el tamaño del fichero en bytes
filesize = Inet1.GetHeader("Content-length")
'Establecemos el Max del = a al tamaño del archivo
ProgressBar1.Max = filesize
contenttype = Inet1.GetHeader("Content-type")
'Creamos y abrimos un nuevo archivo en modo binario
Open App.Path & "\" & nArchivo For Binary Access Write As #1
' Leemos de a 1 Kbytes. El segundo parámetro indica el tipo de fichero. Tipo texto o tipo Binario, en este caso _
binario
vtData = Inet1.GetChunk(1024, icByteArray)
DoEvents
'Si el tamaño del fichero es 0 ponemos bDone en True para que no entre en el bucle
If Len(vtData) = 0 Then bDone = True
Do While Not bDone
'Almacenamos en un array el contenido del archivo
tempArray = vtData
'Escribimos el archivo en disco
Put #1, , tempArray
'Aumentamos la barra
ProgressBar1.Value = ProgressBar1.Value + Len(vtData) * 2
prog = (ProgressBar1.Value + Len(vtData) * 2) / 1000000
lblDescarga.Caption = "Descargando: " & Format(prog, "0.00") & "MB de " & Format(filesize / 1000000, "0.00") & "MB"
' Leemos de pedazos de a 1 kb (1024 bytes)
vtData = Inet1.GetChunk(1024, icByteArray)
DoEvents
If Len(vtData) = 0 Then bDone = True
Loop
completo = bDone
Close #1
ProgressBar1.Value = 0
End Select
Exit Sub
linea1:
MsgBox "Error al conectarse al servidor" & vbCrLf & vbCrLf & Err.Number & vbCrLf & Err.Description, vbInformation + vbOKOnly, App.EXEName
completo = True
On Local Error GoTo 0
End Sub
Entendi todo (O la mayoria de tu codigo), pero, exactamente donde indico que archivo va a bajar?
Eso es el evento del control Inet. Lo que tenes que hacer es poner ese codigo y despues con el control bajar el archivo normalmente.
PD: Acordate de crear los controles que te pide como lblDescarga, etc.
Cita de: sp26 en 10 Enero 2007, 04:37 AM
Entendi todo (O la mayoria de tu codigo), pero, exactamente donde indico que archivo va a bajar?
eso lo haces asi
private sub descargar
With Inet1
'ProgressBar1.Value = 0
.AccessType = icUseDefault
.UserName = "usuario"
.Password = "pass"
nArchivo = "archivo.xxx"
.URL = "http://www.servidor.com/Carpeta/" & nArchivo
.Execute , "GET" 'Indicamos que vamos a descargar o recuperar un archivo desde una url
End With
end sub
Ya lo probe, pero al final no descargo el archivo... :huh: