Facultad de Ingeniería PROYECTO 1 Arquitecturas Cliente/Servidor Prof. Yasmine Macedo Reza Fecha de Entrega 7 de abril 2014 Número de integrantes 2 a 3 alumnos Objetivos • Implementar clientes y servidores utilizando sockets que se comuniquen entre sí. • Implementar un servidor concurrente (Threads) • Utilizar filosofía Productor/Consumidor (que todos los clientes tengan acceso a algún recurso compartido del servidor) METAS • Entender el funcionamiento de la filosofía cliente/servidor. • Entender el uso de hilos para multiprocesamiento y de programación concurrente. ENTREGAR • Se deberá entregar código fuente en un archivo .zip, .tar o .tgz • Las clases deberán estar en un paquete llamado mx.unam.fi.cteserv.paquete (En donde paquete es un nombre que identifique su código) • Reporte de cómo se implementó cada uno de los pasos(Explicación y fragmento de código): 1. Requerimientos (Que se quiere obtener o para que se va a utilizar. Definición del protocolo) 2. Análisis (¿Qué se necesita para lograrlo? (Diagrama de interacción)) 3. Diseño (Bosquejo de clases principales) 4. Implementación (¿Cómo se logró?) 5. Pruebas (¿Funciona cómo se desea?) ESPECIFICACIONES 1. Proponer funcionalidad y protocolo (previa autorización del profesor) con al menos 8 diferentes funcionalidades. 2. Elegir TCP. 3. Crear una aplicación cliente/servidor en Java con las siguientes características: a. Realizar una interfaz gráfica sencilla, para el cliente y para el servidor. (Puede ser a base de la salida estándar pero con menú) b. Implementar las clases necesarias para definir el funcionamiento de aplicación. c. El servidor debe ser concurrente (multithread). d. Que el servidor tenga el control a un medio compartido por todos los hilos que atienden a los clientes. 4. Crear un Cliente con otro lenguaje (C, phyton o C#), este cliente no tiene que llevar interfaz gráfica, es decir puede enviarse la petición directamente al ejecutar el cliente. 5. Enviar el código fuente con la documentación requerida y hacer una breve presentación del proyecto frente al grupo. Referencias: Esta página contiene ejemplos de los componentes de la interfaz gráfica. http://docs.oracle.com/javase/tutorial/ui/features/compWin.html Posibles proyectos: • Sistemas de pedidos • Juegos • Sistema de bitácoras (Obtener información del servidor) • Algún protocolo en versión Beta. • No se acepta como proyecto un chat