Anuncios Google

socket se me traba.

el link esta bien por que con la funcion de lua dev http.get() si lo descarga pero con socket en hm7 se me traba.

EDITO: acabo de descubrir que no es en esa parte la que se traba es en por la parte,  socket:recv(1), creo que se solucionara con un System.sleep().

 

------------------------------------------
descargar("dl.dropbox.com","/s/qrcah4ob3mg3s8m/actualizar.lua",t_ruta_trabajo.."/","Actualizar.lua")
----------------------------------
 
 
function descargar(Server,File,Path,Name) 
 
	Wlan.init()
 
	local socket,error,bytesSent,header,longitud,leer,total
 
	socket,error = Socket.connect(Server,80)
 
     screen:print(50,80,"Conectando")
	 screen.flip()
 
	 while not socket:isConnected() do System.sleep(20) end
 
     screen:print(50,80,"Enviando")
	 screen.flip()
	 System.sleep(200)
 
 -------esta es la parte que se traba.
	 socket:send("GET "..File.." HTTP/1.0\r\n")
	 socket:send("host: "..Server.."\r\n\r\n")
     	 System.sleep(200)
	 file = io.open(Path..Name,"w")
	 header = ""
 
     screen:print(50,80,"Comprobando")
	 screen.flip()
 
	 while true do
	     header = header..socket:recv(1)
	     screen:print(10,10,"Recibiendo cabecera...\n"..header)
	     screen.flip()
	     if header:find("\r\n\r\n") then 
		     break 
		 end
     end	
	 longitud = tonumber(header:match("Content%-Length: (%d+)\r\n"))
	 fin = ""
	 total=0
	 while true do
	     System.sleep(200) 
	     leer=socket:recv(2000)
		 file:write(leer)
		 total=total+2000
		 if total>=longitud then
		     System.sleep(200)
		     file:flush()
			 file:close()
			 fin = "ok" 
			 break
		 end
	 end
	 socket:close()
	 return fin
 
end


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 Mizzael_Uchiha

????????????

eso se ve muy complicado, espero que lo puedas resolver Guiño

Imagen de NEKERAFA

Mmm...

Prueba a enviar la información una vez que se haya conectado, así como enciar la información así:

	 socket:send("GET "..File.." HTTP/1.0\r\n")
	 socket:send("host: "..Server.."\r\n")
	 socket:send("\r\n")

No se me ocurre nada más...


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Jepte

Ya lo solucione creo que el

Ya lo solucione creo que el problema era dropbox, por que con mediafire si va, solo que tengo que utilizar dos servidores uno es www.mediafire.com y el otro es el del archivo algo así 22.11.44

Imagen de -DjB

Trata de ver si con uno de

Trata de ver si con uno de esos ejemplo te puede servir.

Pd: Son de luadev tratad de pasarlo a HM o creo que se usa igual.

Módulo Socket:
socket	socket.connect(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo TCP/IP. Si no se especifica el puerto local, abre un puerto aleatoriamente.
socket	socket.udp(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo UDP. Si no se especifica el puerto local, abre un puerto aleatoriamente.
nil	socket.free(socket) -- Cierra y elimina el objeto Socket.
boolean	socket.isconnected(socket) -- Comprueba que el socket esta conectado.
number	socket.localport(socket) -- Devuelve el puerto local.
number	socket.peerport(socket) -- Devuelve el puerto par.
number	socket.packetslost(socket) -- Devuelve el número de paquetes perdidos.
string	socket.recv(socket, bytes) -- Lee los datos recibidos desde el socket. El numero de bytes es opcional
number	socket.send(socket, string) -- Envía un string mediante la conexión socket. Devue


Imagen de -DjB

Pues yo creo que es por

Pues yo creo que es por esto:

socket:send("GET "..File.." HTTP/1.0\r\n") --Esta parte
	 socket:send("host: "..Server.."\r\n\r\n")
     	 System.sleep(200)
	 file = io.open(Path..Name,"w")
	 header = ""

Creo que debe ser así:

socket:send("GET "..File.." http://www.xxxxx.com\r\n") -- O la direccion que sea.
	 socket:send("host: "..Server.."\r\n\r\n")
     	 System.sleep(200)
	 file = io.open(Path..Name,"w")
	 header = ""
No estoy muy familiarisado con los socket.


Imagen de Jepte

ya lo intente y se traba

ya lo intente y se traba igual :( .

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.