Anuncios Google

Sockets en OneLua

Hola, que tal!

Me gustaría saber como manejar los sockets en OneLua.
Seré honesto, no sé si primero es establecer conexión mediante el modulo wlan, o el modulo socket hace en automático la conexión directa.
Otro punto: he visto en la Doc que socket.connect() pide como agumento URL, lo que me hace dudar es si también es posible usar IP.

Si pudiesen brindarme un ejemplo, estaría mucho más que agradecido.

Saludos!

PD: La idea es establecer comunicación (envío y recibo de datos) entre la psp y un servidor. Estoy trabajando en un proyectito donde deben comunicarse dos dispositivos en una LAN pero sin ser en modo ad-hoc.

 

EDITADO:

He intentado jugar con sockets en OneLua pero no logro entender que es lo que puede fallar. "Hago" la conexión al servidor (el cual funciona bien, pues hice pruebas con otra app y si responde), pero no se conecta, simplemente falla, me retorna nil. Además de que tarda bastante el proceso de conexión. Dejo el código simplificado:

wlan.connect() -- hago conexión a la red tipo infraestructura.
mySocket = socket.connect("192.168.0.18", 8795) -- "Hago" la conexión al servidor junto con el puerto correspondiente. En realidad el servidor está dentro mi red local dentro del gateway.
 
if mySocket then -- Si el socket es difereten de nil:
	screen.print(10, 10, "Socket abierto")
	screen.flip()
	while not buttons.start do
		buttons.read()
		socket.send(mySocket, "Frankie está vivo!")
		screen.print(10, 50, "Enviando datos al server")
		screen.flip()
	end
	socket.close(mySocket)
else
	while not buttons.start do
		buttons.read()
		screen.print(10, 10, "Frankie no vive")
		screen.flip()
	end
end

 

Agradecería bastante la ayuda.

Saludos. 


--[NO EXISTEN LOS LIMITES =D]--


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 PerezRE

Ayuda con sockets

He intentado jugar con sockets en OneLua pero estos no logran entablar una conexión y no logro entender que es lo que esta fallando. "Hago" la conexión al servidor (el cual funciona bien, pues hice pruebas con otra app y si responde), pero no se conecta, simplemente falla, la función socket.connect() me retorna nil. Dejo el código simplificado:

 

wlan.connect()
mySocket = socket.connect("192.168.0.18", 8795)
 
if mySocket then
	screen.print(10, 10, "Socket abierto")
	screen.flip()
	while not buttons.start do
		buttons.read()
		socket.send(mySocket, "Frankie está vivo!")
		screen.print(10, 50, "Enviando datos al server")
		screen.flip()
	end
	socket.close(mySocket)
else
	while not buttons.start do
		buttons.read()
		screen.print(10, 10, "Sorry, Frankie no está vivo")
		screen.flip()
	end
end

 

Agradecería bastante la ayuda.

Saludos. 


--[NO EXISTEN LOS LIMITES =D]--

Imagen de DevDavisNunez

Extraño

Eso verdaderamente es extraño, si estas usando la IP correcta de tu servidor no deberia darte problemas,
A primera vista tu codigo es correcto, revisa que estes usando realmente ese puerto, que realmente este conectada tu consola a la misma red si es que el server es local, y recuerda que son sock TCP los que ONElua apoya no UDP, etc etc etc, pueden ser muchas fallas minimas,
Actualmente mi tiempo es totalmente nulo, pero alla en enero espero estar libre de nuevo, mandame un mp cuando ocupes ayuda.
Saludos y no te rindas.




Legend of Zelda Userbar 1 photo LegendofZeldaUserbar.png

 

Imagen de PerezRE

Gracias!

Primero que nada, te agradezco por la ayuda.

La verdad no encontré el error, no supe cual fue en ese script demostrativo.
Si, el script que puse fue meramente para probar los sockets en onelua, ya que como decía en el post, estaba haciendo un proyectito, pero tronaba el HB al momento de tratar de hacer una conexión al SV (el sv funciona bien, habia hecho otras pruebas con otros dispositivos y estos estalbecian conexión). Así que había decidio aislar el problema con el demo script que prensenté pero resultó lo mismo (con problemas), pero al final, en el código del proyecto, donde también implementé los sockets corregí un par de líneas y funcionó.  Pero en el demo script, en particular, no supe cual fue el problema.

Lazy Readers -> Posible problema y solución:
El problema fue que guardaba los datos en un archivo .ini y al momento de obtenerlos, estos quizá traían consigo algun caracter demás (puede que haya sido '\r' o '\n', o ambos :P), y pues hardcodé los parametros que invocan al socket y la conexión, y voilà!! Solo fue un problema de parse Lengua fuera. Por lo tanto, con una expresión regular obtuve los datos del archivo .ini, testé y hubo conexión con éxito al servidor.

Saludos, DevDavisNunez!


--[NO EXISTEN LOS LIMITES =D]--

Imagen de DevDavisNunez

Increible!

Bueno, si, realmente puede ser lo que dices, si la ip o direccion del server llevaba caracteres de control como \r o \n, este fallaria,
Aqui lo extraño es como leias el .ini?, con el modulo ini de ONElua o con el modulo io de LUA?

Lo bueno es que lo resolviste, aun que estaria genial publicaras tu proyecto, aun que sea como una historia.

Saludos PerezRE!




Legend of Zelda Userbar 1 photo LegendofZeldaUserbar.png

 

Imagen de PerezRE

¡A compartir se ha dicho!

Bueno, creo que estoy usando el modulo de ONElua para le lectura del archivo .ini

De hecho, me agrada la idea de compartirles el proyecto, aunque siendo honesto está muy pobre en gráficos (solo tiene un sprite XD), no es que me excuse pero era un trabajo escolar y el tiempo me comía junto con otros labores.
¿Alguna idea de donde pueda publicar el proyecto, DevDavisNunez? No es unicamente un HB para el PSP, tuve que utilizar una Raspberry Pi, por lo tanto me gustaría hacer mención acerca del proceso de desarrollo entero, quizá a alguien le interese continuar con el proyecto o llevarlo a más allá :)


--[NO EXISTEN LOS LIMITES =D]--

Imagen de DevDavisNunez

Excelente!

Bueno, eso suena aun mas interesante, de hecho ONElua de PSP tiene un modulo SIO que permite utilizar el puerto UART o Serial In Out de la consola, con lo cual puedes manejar todo tipo de perifericos, y claro comunicarlo con Arduino, RPi, FPGA, etc, todo a todo, yo en ONEshell de PSP le añadio el soporte de utilizar un Mouse real que se comunica con un avr e interpreta para enviar por uart, y listo, un entorno grafico completo,

Puedes publicar aqui mismo a detalle tu trabajo, en una entrada, y finalmente yo me lo llevo a mi pagina que ando armando, es sobre todo tipo de proyectos, codigos y tutoriales, aun que de momento es un simple Boceto.

Saludos y suerte ademas de Feliz año nuevo!




Legend of Zelda Userbar 1 photo LegendofZeldaUserbar.png

 

Imagen de PerezRE

De maravila!

Deberías hacer un tuto de como usar el SIO de 1Lua, quizá a alguien le vuele la imaginación x)

Iré haciendo un .docx para posteriomente publicarlo en la scene ;)

Saludos y feliz año, DevDavis!


--[NO EXISTEN LOS LIMITES =D]--

Imagen de DevDavisNunez

Sockets

Hola Buen dia!
Los sockets son solamente puentes de comunicacion por asi decirlo.
Primero estableces la conexion mediante wlan.connect(), compruebas que efectivamente estas conectado, y finalmente haces uso de los sockets.
El sockets.connect dice el arg url, pero en si, acepta url o ip, ejemplo: "192.168.1.100", etc.. el objeto resultante ya se puede usar con comodidad mediante recv y send.
Saludos




Legend of Zelda Userbar 1 photo LegendofZeldaUserbar.png

 

Imagen de PerezRE

Gracias

Me has ahorrado tiempo.
Al principio no estaba seguro de como funcionaban los sockets en el PSP, con tu comentario me has aclarado mas de una duda.
Gracias, DevDavisNunez.

Saludos.


--[NO EXISTEN LOS LIMITES =D]--

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.