Noviembre 06, 2013, 04:01:32 PM Ultima modificación: Noviembre 06, 2013, 04:06:42 PM por romon_28
Quiero hacer un juego son un servidor y solo un cliente.
Cuando el cliente se conecta se ejecuta el código:


socket = tcplisten(1471,2,1);

if (socket<0)
{
show_message("Error escuchando en el puerto indicado.");
game_end();
break;
}

global.Servidor = true;


El servido tiene la posibilidad de cancelar la espera que realiza para conectarse con el cliente. Pasa ello uso:

if (Opcion=="Cancelar")
{
closesocket(socket);
instance_destroy();
}


El problema sucede cuando el servidor intenta "esperar" de vuelta al cliente. Me salta un "error" con el mensaje: "Error escuchando en el puerto indicado."
Es porque cuando se creo un nuevo socket este me devuelve un valor negativo indicando que no pudo conectarse con el puerto que anteriormente si pude acceder.

Entonces supongo que el código:
closesocket(socket);
no funciona como creía que lo hacia.

Como puedo solucionarlo?

No, te acabás de topar con el cáncer de la 39dll, el closesocket, recuerdo haber estado luchando con el código interno de la 39dll para solucionarlo, y al final lo solucioné de otra manera que no recuerdo muy bien. Justamente me enviaron un mp hace tiempo en yoyo preguntando cómo lo había solucionado, pero realmente tengo muy mala memoria xD
Como recomendación personal te diría que nunca cierres la escucha, eso debería solucionar el problema así por arriba. Si no querés nuevos jugadores dentro podés enviarles un dato que les indique que la partida está llena y listo




si.. lo pensé como una alternativa pero el problema también  me salta cuando, supongamos, tengo 2 grupos de 2 jugadores con la misma red cuando el 2º grupo quiere conectarse al mismo puerto... pero bueno.. por lo visto no tiene solución solo alternativas  :-\
Gracias por la data  :D