Tengo un programa servidor de servidores con un serversocket.
A este programa servidor se le pueden conectar 2 tipos de programas.
1.- Un programa cliente, que recibe la dirección de servidor de servicios.
2.- Un programa servidor de servicios, que se registra como disponible para que el programa cliente reciba su dirección para que se le conecte a él.
Cuando un programa cliente se conecta sin que haya conectado previamente un programa servidor de servicios el programa cliente conecta sin ningún problema, recibe el mensaje de que no hay proveedores de servicios y hace sus cosas sin problemas.
Sin embargo, cuando el programa servidor de servicios intenta abrir un socket, ya sea antes o después que el cliente... se queda colgado. Y el código de conexión es exactamente el mismo que el que usa el cliente. Abre un socket con una dirección y un puerto. Los 2, tanto el cliente como el proveedor de servicios abren el socket de la misma manera.
Además, el proveedor de servicios, en el momento de quedarse colgado, aún no ha abierto un ServerSocket para que se le conecte un cliente. En el momento de colgarse los 2 programas, el cliente y el proveedor de servicios han ejecutado exactamente las mismas cosas. Sin embargo... el programa servidor de servicios se queda colgado en la línea de declaración del nuevo socket
Código:
private Socket conexion;
public boolean isConectado(){
try {
conexion=new Socket(IP,puerto);
(...)etc
Lo curioso es que antes de que me empezase esto a fallar, me estaba conectando bien. Tanto el servidor de servicios como el cliente. Y tocando y modificando cosillas sobre la gestión de la información una vez llegase a cada programa (mostrarla en una tabla, sacar la info de la tabla para mandarla, etc) de pronto empezó a fallarme y ya no he conseguido que me funcione más. Se queda colgado y no pasa de ahí.