Ahora vamos a crear la clase cliente, Ejemplo26b.java. El cliente simplemente establece la conexión, lee a través de un DataInputStream (mediante el método readLine()) lo que el servidor le manda, lo muestra y corta.
cliente:
import java.io.*;
import java.net.*;
public class Ejemplo26b {
public static void main(String argv[]) {
InetAddress direccion;
Socket servidor;
int numCliente = 0;
try {
direccion = InetAddress.getLocalHost(); direccion local
servidor = new Socket(direccion, 5000);
new DataInputStream(servidor.getInputStream());
System.out.println( datos.readLine() );
}
catch (Exception e) {
}
}
}
Para probar esto, asegúrense que los servicios TCP/IP estén activos, corran java Ejemplo26a en una ventana y corran varias veces java Ejemplo26b en otra. Las salidas serán más o menos así:
Ventana servidor:
C:\java\curso>java Ejemplo26a
Llega el cliente 1
Llega el cliente 2
Llega el cliente 3
(
cortar con control-C
)
Ventana cliente:
C:\java\curso>java Ejemplo26b
Usted es mi cliente 1
C:\java\curso>java Ejemplo26b
Usted es mi cliente 2
C:\java\curso>java Ejemplo26b
Usted es mi cliente 3
(
aquí cerramos el servidor
)
C:\java\curso>java Ejemplo26b
java.net.SocketException: connect
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:223)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:128)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:115)
at java.net.Socket.<init>(Socket.java:125)
at java.net.Socket.<init>(Socket.java:101)
at Ejemplo26b.main(Ejemplo26b.java:12)
Esto es todo por ahora. El ejemplo fue lo más sencillo posible, pero mediante el mismo método el servidor y los clientes pueden intercambiar datos escribiendo en ambas direcciones. Inclusive, el servidor puede correr en una máquina y los clientes en otras; además, si bien en este caso utilizamos aplicaciones standalone, se pueden utilizar applets.
Por ejemplo, una aplicación servidora puede correr constantemente en un server de Internet (por ejemplo, para buscar datos en una base de datos) y diferentes clientes en distintas máquinas, posioblemente applets Java, pueden conectarse a ella y consultarla.