<< >> Título

Interfaz de comunicaciones

Las comunicaciones se establecerán a través de algún mecanismo de comunicación entre procesos, que ustedes habrán de elegir. No obstante, la interfaz de comunicaciones será impuesta, tal y como se define en este documento.

Básicamente, se tienen sendas estructuras para que el cliente o el servidor envíen mensajes, así como dos parejas de funciones de envío y recepción de peticiones y respuestas.

Las estructuras de datos empleadas serán las siguientes:

/* Constantes */

#define DIM_ORDEN	200 	/* Long. máxima de la orden */
#define DIM_CANAL	128	/* Long. máx. nombre de tty */

#define FINALIZA		7	/* Código de finalización */


/* Códigos de error */

typedef enum
{
	ERR_OK = 0,
	ERR_HIJO = 1000,
	ERR_CARGA = 2000,
	ERR_EJEC = 3000

} Codigo_error;


/* Estructuras para peticiones y respuestas */

struct Peticion
{
	char	orden[DIM_ORDEN];	/* orden para ejecutar */
	char	canal[DIM_CANAL];	/* fichero donde se visualiza */
};

struct Respuesta
{
	Codigo_error resultado;
};

El cliente enviará al servidor una petición con la estructura struct Peticion. El campo orden contendrá la orden completa. En caso de una orden de finalizar, el campo orden[0] tendrá el valor 7 (constante FINALIZA). El campo canal es una cadena de caracteres donde se guarda la ruta de la terminal del cliente.

Las funciones para efectuar las comunicaciones han de tener estos prototipos:

/* Funciones de comunicación para el cliente */
int envia_peticion ( const struct Peticion* );
int espera_respuesta ( struct Respuesta* );

/* Funciones de comunicación para el servidor */
int recibe_peticion ( struct Peticion* );
int envia_respuesta ( const struct Respuesta* );

Estas cuatro funciones devuelven un número entero, cuyo significado se describe a continuación:

Valor

Significado
0
La operación se completó satisfactoriamente
1
El servidor ha finalizado antes de tramitar la orden (en las funciones propias del cliente)
-1
Hubo algún error

Las estructuras y prototipos de funciones que conforman la interfaz de comunicaciones están ya definidas en el archivo /prac/cliser/comunicacion.h


<< >> Título