Anuncios Google

Ayuda Descargar, Uso De Sockets OneLua PSP

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")




 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jepte

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())

Imagen de NEKERAFA

Es un callback

Es un callback de OneLua que funciona internamente

Imagen de DevDavisNunez

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 :( 




 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.