Estoy intentando hacer un gestor de descargas en VB6 usando el componente Winsock y el protocolo HTTP. Pues bien despues de pedir al servidor que me envie el archivo, el servidor me responde con un conjunto de headers y seguidamente comienza el archivo en el mismo paquete.
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim buffer() As Byte
Dim packet() As Byte
Dim header As String 'aqui se guardarán los headers (información sobre el archivo asi como tamaño, etc)
Winsock1.GetData buffer
For i = 0 To bytesTotal
header = header & Chr(buffer(i))
n = InStr(1, header, vbCrLf & vbCrLf, vbTextCompare) ' si encuentra dos veces salto de línea significa que empieza los datos binarios del archivo.
If n >= 1 Then
Exit For
End If
Next i
End Sub
La variable buffer() contiene al principio los headers y seguidamente contiene los datos del archivo por eso quiero pasar de la variable buffer() a la variable packet() solo una parte de la variable buffer() para poder separar los headers y los datos. Quiero que copie nada más que donde empieza la informacion del archivo... es decir de Len(header) en adelante hasta lo que ocupe la variable buffer() que en este caso seria bytesTotal)
He probado algo así como:
packet = buffer(Len(header) To bytesTotal)
y sin exito ninguno xDD
PD: He probado en hacer
For i = Len(header) to bytesTotal
packet(i-Len(header) = buffer(i)
next i
Pero despues al poner eso en un archivo final no lo hace bien
Open "C:/archivo.rar" For Binary As #1
Put #1, , packet
Close #1
El principio del archivo lo hace bien pero despues empieza a poner numeros sueltos separados por espacios... cosa a la que no veo ningun sentido...:S.
la verdad que no entiendo bien lo qeu queres hacer... buffer y byteTotal son 2 cosas distintas...
si podrias poner un ejemplo de lo que queres hacer me seria mucho mas facil ayudarte...
osea, mostrandome una cadena de informacion origianl y una de como queres que este modificada
saludos
Cita de: skullsp en 17 Diciembre 2007, 07:06 AM
la verdad que no entiendo bien lo qeu queres hacer... buffer y byteTotal son 2 cosas distintas...
si podrias poner un ejemplo de lo que queres hacer me seria mucho mas facil ayudarte...
osea, mostrandome una cadena de informacion origianl y una de como queres que este modificada
saludos
si no me ekivoco el lo que kiere hacer es algo al estilo flashget que descarga simultaneamente el archivo en distintas partes para acelerar su descarga..
salu2!
Hola mirate un manual que hizo Hades que esta por aqui en el foro te va a ayudar mucho, y te recomiendo que los datos (bufer) los vuelques en una variable de tipo string
Saludos