Está mal planteado el código de tu servidor
package servidor;
import java.io.*;
import java.net.*;
import java.util.GregorianCalendar;
/*
* @author Cesar
*/
public class Servidor
{
private static int PUERTO=5000;
public static void main
(String[] args
) {
int hora, minuto, segundo, cliente=0;
boolean infinito = true, skCl=true;
try
{
System.
out.
println("Escuchando al Puerto "+PUERTO
+" Esperando..");
Socket skCliente
= skServidor.
accept(); // aqui el prog. se detiene y espera(escucha) al prox cliente ++cliente;
while(infinito)
{
//recibo e imprimo en pantalla el msje q recibo de 'Cliente' en
//infoEntrada -> informac. que entra - ingresa al servidor
op=infoEntrada.readUTF(); //recibe el texto: “HORA” “MINUTO” “SEGUNDO” “HORAMINUTO” “HORAMINUTOSEGUNDO”
System.
out.
println("El Cliente numero "+Integer.
toString(cliente
)+" me esta solicitando.."+op
);
//--------------------------------------------------------------
//Aqui validar el parametro que se recibe desde el cliente.
switch(op)
{
case "HORA":
op = "La hora actual es : "+hora;
break;
case "MINUTO":
op = "El minuto actual es : "+minuto;
break;
case "SEGUNDO":
op = "el segundo actual es : "+segundo;
break;
case "HORAMINUTO":
op = "La hora y el minuto actual es : "+hora+" : "+minuto;
break;
case "HORAMINUTOSEGUNDO":
op = "La hora el minuto y el segundo actual es : "+hora+" : "+minuto+" : "+segundo;
break;
case "salir" :
op = "saliendo";
break;
case "SALIR" :
op = "saliendo";
break;
default :
op = "Opcion incorrecta";
break;
}
//envia RESPUESTA al cliente
//infoSalida -> informac. que sale fuera del servidor
infoSalida.writeUTF(op);
//--------------------------------------------------------------
}
skCliente.close(); /// **** AQUI ESTA EL TEMA ..ESTO CIERRA LA CONECC AL CLIENTE
}
{
System.
out.
println(e.
getMessage()); }
}
}
Interpreta con tu cerebro el flujo de tu programa.
Si no lo captas mira esta linea
Socket skCliente
= skServidor.
accept(); // aqui el prog. se detiene y espera(escucha) al prox cliente
Está rodeada de un try/catch no tiene ningún bucle o ciclo que indique que se repita.
Una arquitectura para manejar los nuevos clientes en los servidores seria algo así.
while(infinito)
socket nuevo = accept()
iniciar_un_nuevo_thread(nuevo)
endwhile
En resumen: Cada vez que un nuevo cliente se conecte, se creará un nuevo Thread por cada cliente. En cada Thread tu deberías colocar el codigo que tienes en el while (en el tuyo).
Espero que hayas entendido.
Saludos!