Título: [RESUELTO]Crear una cola de conexiones de Socket en un ServerSocket. Publicado por: NikNitro! en 24 Mayo 2014, 15:25 pm Buenas, no estaba seguro de que preguntas de programación fueran en Redes, por lo que lo puse aquí.
Tengo un servidor que recibe conexiones de socket. Solo puede procesar una a la vez, pero quiero que si un segundo cliente intenta conectarse espere hasta que pueda. Había pensado hacerlo con una cola, pero no se "qué meter" dentro de la cola. Aquí el code de mi Servidor: Código
Como veis, la conexion no es más que un 'Socket sck = ServerSocket.accept()" Entonces cómo podría hacerlo? Salud ;) Título: Re: Crear una cola de conexiones de socket. Publicado por: Migugami en 24 Mayo 2014, 15:46 pm Se me ocurre que puedes hacer que cada conexión sea un thread y esperar por el término del thread actual. Creo que esto lo puedes hacer llamando al método join() en el thread que quieres se mantenga ejecutándose sin iniciar el otro thread que quiere ejecutarse, poniendo el thread B en cola de espera.
Código
Título: Re: Crear una cola de conexiones de socket. Publicado por: NikNitro! en 26 Mayo 2014, 19:19 pm Mmm, perdón por la tardanza en la respuesta, pero quería responder con 'sustancia'.
Lo de los hilos no es lo que busco. Te explico: El constructor de serverSocket que estoy usando es al que se le pasa un int que es el puerto, pero existe otro constructor tal que así: Código: new ServerSocket(int port, int backlog); backlog indica el número de conexiones en espera que puede tener a la vez. Con el que yo estoy usando se usa como predeterminado el número 20 (o 50, ahora mismo no lo recuerdo bien). Esto significa que la cola de conexiones está creada y, sin embargo, cuando cierro una conexion se me cierran todas las de la cola (todas van al mismo puerto y al cerrar el socket se cierran todas). Total, si comento el close del serverSocket, cuando cierro la conexion desde el cliente me empiezan a dar una exageración de Throws en el receiveMessage(). Qué pensais que estoy haciendo mal? :s Salud Título: Re: Crear una cola de conexiones de socket. Publicado por: Migugami en 26 Mayo 2014, 20:48 pm ¿Cuando se cierran todas las conexiones, lanza alguna excepción (debería hacerlo) ? Si es así, coloca el StackTrace.
Te dejo un ejemplo extraído del libro Cómo programar en Java, que crea un servidor con una cola de conexiones: Código
Código
Título: Re: Crear una cola de conexiones de socket. Publicado por: NikNitro! en 26 Mayo 2014, 21:41 pm Ok. El fallo estaba únicamente en que cuando acababa una conexion cerraba el serverSocket y luego creaba uno nuevo. He puesto el constructor del serverSocket en el constructor de Servidor y le he quitado el .close().
Si alguien necesita el código completo que me lo pida. De todos modos a partir del día 8 (que es cuando entrego la práctica) lo subiré a mi blog ;) |