Documentos

Solo disponible en BuenasTareas
  • Páginas : 14 (3405 palabras )
  • Descarga(s) : 0
  • Publicado : 17 de diciembre de 2010
Leer documento completo
Vista previa del texto
• Enunciado de la práctica. En esta práctica se pretende aumentar el conocimiento acerca del uso de sockets en Java, en este caso utilizando tanto conectores de tipo stream (TCP) como conectores datagrama (UDP), siendo capaz de construir sus propias estructuras Cliente−Servidor. A su vez se pretende que el alumno se familiarice con el uso de hebras (threads) en Java. El desarrollo de lasaplicaciones se realizará utilizando el entorno de IBM VisualAge for Java 3.5, teniendo también así el alumno que familiarizarse con este potente entorno de programación. • Desarrollo de la practica. La práctica consta de dos partes. En la primera debemos desarrollar una aplicación cliente−servidor que utilice sockets stream (TCP), mientras que en la segunda parte la aplicación deberá utilizar socketsdatagrama (UDP). El funcionamiento de las aplicaciones se explica en los correspondientes apartados. • Aplicación con sockets stream (TCP). Para esta aplicación usaremos las clases Socket y ServerSocket, ya que estas son las adecuadas para el manejo de este tipo de sockets. En la práctica anterior ya habíamos utilizado estas clases para crear otra aplicación, pero el programa resultante estaba muylimitado, ya que el servidor solo atendía una petición y finalizaba su ejecución, por lo que tan sólo se atiende al primer cliente que lo solicite. La nueva aplicación eliminar estas limitaciones, generando así un nuevo cliente y un nuevo servidor cuyo funcionamiento será: El cliente envía cadenas de caracteres procedentes del servidor, hasta que se teclee FIN, por su parte el servidor devuelvedichas cadenas junto a cierta información de estado, esta información es: • Nombre del sistema operativo donde se ejecuta el servidor. • Versión del sistema operativo • Arquitectura de la maquina donde se ejecuta el servidor. • Fecha y hora de la máquina • Nombre de la hebra encargada de atender las peticiones. Para llevar a cabo estos procesos se han creado nuevos paquetes que contienen las clasesnecesarias. Un paquete MISC que contiene la clase Estado y un paquete TCP que contiene las clases ClienteTCP, ServidorTCP y AtencionClienteThread. El funcionamiento de todas estas clases se explica en los siguientes apartados. Clase Estado. Los objetos de la clase Estado son los encargados de extraer información acerca de la máquina en la están. La información que recopilan es la citadaanteriormente para ser enviada al cliente. Para ello usamos cinco variables de tipo string, además debemos especificar el nombre de la hebra desde la cual se hace referencia a este objeto. El código de esta clase es: import java.util.*; 1

public class Estado { public Estado (String nameThread){ Date fecha = new Date(); NombreSO = System.getProperty("os.name"); VerSO = System.getProperty("os.version");Arquitectura = System.getProperty("os.arch"); Fecha = fecha.toString(); NombreHebra = nameThread; } public String toString(){ String Estado = new String(""); Estado = NombreSO + " Version " + VerSO + "\nArquitectura: " + Arquitectura + "\n" + Fecha + " \n" + NombreHebra; return Estado; } String Arquitectura; String Fecha; String NombreHebra; String NombreSO; String VerSO; } Como podemos ver la claseconsta del constructor y un método toString(). En el constructor se recopila toda la información utilizando llamadas al sistema propias de java para el tipo y versión del sistema operativo, y para la arquitectura del sistema, mientras que para la fecha y hora hacemos uso de la clase Date, que encontramos en el paquete java.util. El nombre de la hebra lo debemos pasar como argumento al crear elobjeto. Por último el método toString() crea un nuevo string donde encadena toda la información recopilada. Es importante notar que introduce retornos de carro e incisos explicativos, por lo que a la hora de recibir la información debemos tener en cuenta que ocupa varias líneas. Clase ClienteTCP. La clase ClienteTCP tiene un sencillo funcionamiento. Consta de un único método main(), por tanto es 2...
tracking img