Saltar la navegación

2.8.- Ejemplo IV.

A continuación vamos a ver un ejemplo en el que se calcula el tiempo de trasmisión de datos entre una aplicación Cliente y Servidor. Para ello, el servidor le va a enviar al cliente un mensaje con el tiempo del sistema en milisegundos y el cliente cuando reciba el mensaje calculará la diferencia entre el tiempo de su sistema y el del mensaje.Icono que representa un servidor.

Servidor.java

import java.io.* ;
import java.net.* ;
import java.util.Date;

class Servidor {
    static final int Puerto=2000;

    public Servidor( ) {

        try {
            // Inicio el servidor en el puerto
            ServerSocket sServidor = new ServerSocket(Puerto);
            System.out.println("Escucho el puerto " + Puerto );

            // Se conecta un cliente
            Socket sCliente = sServidor.accept(); // Crea objeto
            System.out.println("Cliente conectado");

            // Creo los flujos de entrada y salida
            DataInputStream flujo_entrada = new DataInputStream( sCliente.getInputStream());
            DataOutputStream flujo_salida= new DataOutputStream(sCliente.getOutputStream());

            // CUERPO DEL ALGORITMO
            long tiempo1=(new Date()).getTime();
            flujo_salida.writeUTF(Long.toString(tiempo1));     

     // Se cierra la conexión
     sCliente.close();
     System.out.println("Cliente desconectado");

        } catch( Exception e ) {
     System.out.println( e.getMessage() );
        }
}

public static void main( String[] arg ) {
    new Servidor();
}
}

Cliente.java

import java.io.*;
import java.net.*;
import java.util.Date;

class Cliente {
    static final String HOST = "localhost";
    static final int Puerto=2000;

    public Cliente( ) {
     String datos=new String();
     String num_cliente=new String();

     // para leer del teclado
     BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

     try{
         // Me conecto al puerto
         Socket sCliente = new Socket( HOST , Puerto );

         // Creo los flujos de entrada y salida
         DataInputStream flujo_entrada = new DataInputStream(sCliente.getInputStream());
         DataOutputStream flujo_salida= new DataOutputStream(sCliente.getOutputStream());

         // CUERPO DEL ALGORITMO
         datos=flujo_entrada.readUTF();     
         long tiempo1=Long.valueOf(datos);
         long tiempo2=(new Date()).getTime();          
         System.out.println("\n El tiempo es:"+(tiempo2-tiempo1));     

         // Se cierra la conexión
         sCliente.close();
     } catch( Exception e ) {
         System.out.println( e.getMessage() );
     }
        }

    public static void main( String[] arg ) {
        new Cliente();
    }
}