Hola, Buenas Tardes,
Pocas veces me eh encontrado con un problema el cual tenga que Postear,
Sin embargo esta vez no encuentro la solucion, despues de varias horas de probar,
Les pido ayuda, coders, si aun quedan, de favor, el problema que ahora enfrento es descargar un archivo pesado,
ya que con archivos menores de 304028 Bytes, Funciona,
Le doy vueltas, pero no encuentro el error, De Antemano Gracias por su apoyo!
Se muestra toda la info que recibo de cabecera, esta fue una prueba antes, con un archivo pequeño de 2kb el cual funciono ideal.
Lo maximo que llega, del total, y termina, :(
function onNetGetFile(size, written) --Tamao = ((written * 280) / size) Porcentaje = math.floor((written * 100) / size) --screen.print(10,10,written.."/"..size) screen.print(10,30,Porcentaje.."%") --draw.fillrect (50, 200, Tamao, 50, color.new(0,255,0)) screen.flip() end function descargar(Link,Name) w,x = string.find(Link, "/",1,true) host = string.sub(Link, 1, w-1) Files =string.sub(Link, w) local Mysocket,error,bytesSent,header,longitud,leer,total -- Abrimos el puerto a el servidor Mysocket = socket.connect(host,80) screen.print(10,10,"Puerto Abierto") screen.flip() os.delay(50) -- Enviamos Peticion Getfile :) Mysocket:send("GET "..Files.." HTTP/1.1\r\n".."host: "..host.."\r\n\r\n") screen.print(10,10,"Peticion Enviada") screen.flip() os.delay(50) -- Recibimos Header con info header="" while true do header = header..Mysocket:recv(1) if header:find("\r\n\r\n") then break end end screen.print(10,10,"Cabecera Recibida") --screen.print(10,30,header) -- Obtenemos el Size del archivo a descargar a,b = string.find(header, "Content-Length: ",1,true) c,d = string.find(header, "\r\n",b,true) SizeString = string.sub(header, b, c) SizeToDown = tonumber(SizeString) screen.print(10,30,"Se descargaran: "..SizeToDown.." Bytes") screen.flip() --Iniciamos la recepcion del archivo -- os.delay(50) file = io.open(Name,"w") fin = "" total=0 local contar=0 screen.print(10,10,"Escrbiendo Archivo") screen.flip() -- while true do leer=Mysocket:recv(1024) if leer~="" then file:write(leer) onNetGetFile(SizeToDown, file:seek()) else contar=contar+1 end if leer=="" and contar>=5 then os.delay(5) file:flush() fin = "OK :)" screen.print(10,10,"Descarga: "..file:seek().." / "..SizeToDown.."\nIs: "..fin) file:close() screen.flip() buttons.waitforkey() break end end Mysocket:close() return fin end wlan.connect () descargar("devonelua.x10.mx/data/CristalVistav70DEMOCFPlusESP.rar","CrystalVista.rar")
Pues yo no veo nada mal en el
Pues yo no veo nada mal en el codigo, ya te fijaste si el archivo esta completo?, para que sirve esta funcion?: onNetGetFile(SizeToDown, file:seek())
Es un callback
Es un callback de OneLua que funciona internamente
Me Comentan
Que el problema esta en el modulo sockets de OneLua, el archivo si, queda incompleto, ademas, la funcion esa, hago uso de ella como un callback xD :)
tambien sirve internamente como callback para la funcion getfile de onelua XD :)
Mmm creo me quedare resignado hasta que se solucione ese modulo :(