A modo de ejemplo, vamos a ver un ejemplo sencillo en el que el servidor va a aceptar tres clientes (de forma secuencial no concurrente) y le va a indicar el número de cliente que es.
Servidor.java
import java.io.* ;
import java.net.* ;
class Servidor {
static final int Puerto=2000;
public Servidor( ) {
try {
ServerSocket sServidor = new ServerSocket(Puerto);
System.out.println("Escucho el puerto " + Puerto );
for ( int nCli = 0; nCli < 3; nCli++) {
Socket sCliente = sServidor.accept();
System.out.println("Sirvo al cliente " + nCli);
DataOutputStream flujo_salida= new DataOutputStream(sCliente.getOutputStream());
flujo_salida.writeUTF( "Hola cliente " + nCli );
sCliente.close();
}
System.out.println("Se han atendido los clientes");
} catch( Exception e ) {
System.out.println( e.getMessage() );
}
}
public static void main( String[] arg ) {
new Servidor();
}
}
Para compilar el programa ejecute:
javac Servidor.java
y para ejecutarlo ejecute
java Servidor
En la siguiente figura se muestra al servidor como ha procesado las solicitudes de tres clientes.