Práctica 2. Sockets C y Java en modo stream (TCP)

SCS, 2010/11


Índice General

Ejercicio 1: Sockets TCP en C

Se mostrará la creación y uso de sockets TCP en C y la interacción entre servidores y clientes escritos en diferentes lenguajes.

Se parte de un código de ejemplo que implementa un servicio de cifrado de cadenas de caracteres sencillo.

Descarga: sockets1.tar.gz

Funcionamiento

El servidor escucha en el puerto 12345 y maneja 2 tipos de peticiones con la siguiente sintaxis:

CIFRAR:<cadena a cifrar>
DESCIFRAR:<cadena a descrifrar>
Nota: todos los mensajes intercambiados (peticiones y respuestas) terminan con '\n'

Recibida la petición, en función del comando indicado, el servidor responde con la versión cifrada o descifrada de la cadena recibida como parámetro.

Componentes y compilación

Se incuye una implementación en C del servidor monoproceso y otra multiproceso. Se incluyen también 2 clientes para acceder al servicio, uno escrito en C y otro en Java.

Compilación:

$ tar xzvf socket1.tar.gz
$ cd sockets1
$ make

Uso:

Tareas a realizar

Ejercicio 2: Sockets TCP en Java

Se parte de un código de ejemplo que implementa un servidor de diccionarios.

Descarga: sockets2.tar.gz

Funcionamiento

El servidor escucha en el puerto 22222.

El protocolo que implementa maneja los siguientes mensajes (todos los mensajes intercambiados [peticiones y respuestas] terminan con un salto de línea '$\backslash$n')

BUSCAR <palabra> $\backslash$n busca la palabra en el diccionario y devuelve su entrada o informa de que no la ha encontrado
LISTAR $\backslash$n devuelve la lista de palabras contenidas en el diccionario
AYUDA $\backslash$n devuelve la lista de comandos reconocidos por el servidor
SALIR $\backslash$n termina la sesión con el servidor de diccionarios

Componentes y compilación

Verificar que el servidor no soporta el acceso concurrente desde dos clientes.

Tareas a realizar

Se tratará de extender el servidor de partida con 2 ampliaciones

  1. Modificar el servidor para construir una versión multihilo que permita atender a varios clientes a la vez

  2. Ampliar el protocolo para crear un servidor con estado que maneje diccionarios personalizados y que soporte los siguientes comandos:

Documentación a entregar



ribadas 2010-10-05