RE:SOBREELTEMAPASADO (HERENCIA Y VARIABLES)
Hola:
Un SocketServidor en el momento que lo creas, lo preparas y tal está a la escucha de clientes. Acepta a los clientes cuando haces accept().
Si el SocketServidor no está a la escucha, el cliente que intente conectarse saldrá inmediatamente con una excepción de "connection refused".
Si el SocketServidor está a la escucha, pero no hace el accept(), el cliente se queda colgado en espera de que el servidor haga accept(), que es tu caso.
La solución más sencilla es que después de accept() las cinco conexiones, cierres el ServerSocket (no los socketClient, sin socketServer). De esta forma ya no está a la escucha.
En el cliente captura la excepción y así sabrás que el servidor ya ha aceptado el número máximo de conexiones (o simplemente que no lo has arrancado).
Se bueno.