Anuncios Google

Problema con Hybrid

Desde hace tiempo estoy trabajando en un projecto con el que intento conectar la DS y la PSP utilizando un AP conectado a un PC en el que ejecuto un servidor programado por mí en VB.net, la cosa es que el servidor funciona pero tengo un problema a la hora de enviar los datos, la cosa es que no llegan, el servidor no registra ni datos entrantes ni salientes, os dejo aquí lo que llevo programado de nueva librería para PSP, ya que la anterior era un desastre (aúnque el servidor si registraba los datos que la PSP enviaba...), haber si me podeis ayudar...

 

-- Librería Hybrid programada por RedHunter
-- Versión para PSP
 
Hybrid = {}
function Hybrid.Connect(ip) -- Conectar a un servidor Hybrid, La conexión a un punto Wifi debe estar configurada anteriormente.
 
Hybrid_socket = socket.connect(ip,8888)
socket.send(Hybrid_socket,wlan.ip().."$")
 
end
 
function Hybrid.Str(data) -- Envia datos al servidor
 
socket.send(Hybrid_socket,data)
 
end
 
function Hybrid.Recv() -- Recibe datos del servidor, devuelve los datos recibidos o false si no se recibio nada
 
local Hybrid_data = socket.recv(Hybrid_socket)
 
	if Hybrid_data ~= nil then
		return Hydrid_data:match("#dt: (%d+)")
	else
		return false
	end
 
end

Saludos y gracias!


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

PerezRE

Emmm... primero que nada no sé mucho sobre la programación, así que por favor pido tolerancia jeje.
Con respecto a tu problema, supongo que no das tiempo para que los datos sean enviados y/o recibidos. Intenta agregarle una funcion donde le tiempo para recibir y envíar datos.

Saludos!


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

Probaré...

Cualquier comentario es bueno, a ver que tal así...

 

Salu2!

Imagen de Chimecho

Mmmm...

En mi cutre "clase" ChiSocket, tengo esta función para recibir:

function ChiSocket.recibir(myzock)
	local rcv = ""; -- String
	local ch; -- char
	local van = 0; -- int (cuantos bytes van)
	local contVacio = 0; -- int
 
	while true do
		ch, b = myzock.sckt:recv(1);
 
		if b>0 then
			if ch ~= "\r" and ch~="" then -- no guardar \r
				rcv = rcv .. ch;
				van = van + 1;
				contVacio = 0;
			end
		elseif van>0 then -- puede que sólo se haya recibido parte de los datos
			contVacio = contVacio+1;
			screen.waitvblankstart(5); -- espera
			if contVacio == 5 then
				break;
			end
		end
 
		if van == 0 then -- las primeras veces es posible que no se reciba nada porque el servidor aun no reacciona, entonces se hace una espera y continúa
			screen.waitvblankstart(5);
		end
	end
 
	return rcv;
end

Recibe un socket creado con ChiSocket.new, que tiene dentro un elemento llamado sckt que es un socket devuelto por socket.connect:

-- Extraído de ChiSocket.new
 
newsock.sckt = socket.connect(host, port);
 
if not newsock.sckt then -- ocurrió algun error
	add2Log("Error, no se pudo abrir la conexión al host: "..host); -- add2Log es una función que recibe un String y graba en un archivo o que se reciba
	return; -- retorna nil si no se pudo conectar
else -- Se encontró el servidor, se intentará conectar...
	add2Log("Esperando a: "..host);
	while not newsock.sckt:isconnected() do -- mientras no esté conectado
		screen.waitvblank(); -- esperamos...
	end
	add2Log("Conectado a: "..host..":"..port);
end
 
-- si llega a este punto es porque el socket está conectado correctamente al servidor

 

Algo podrás sacar de ahí :)

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

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.