Sistemas de Procesamientos Distribuidos
Enviado por edisonrock • 22 de Noviembre de 2012 • 504 Palabras (3 Páginas) • 705 Visitas
TEMA:
Sistemas de Procesamientos Distribuidos
La implementación de un RPC se va a llevar a cabo en el sistema operativo libre GNU LINUX, versión CenTOs con la ayuda de la librería de desarrollo que viene integrado en Linux, como es el gcc y rpcgen, que nos ayuda en todo el proceso de codificación. En un lenguaje similar a C (pero no igual) definimos los prototipos de las funciones que queremos que se publiquen, generen varios ficheros con todo el código hecho, excepto, naturalmente, el código de las funciones que queremos publicar.
Que es el RPC?
En UNIX es posible tener en ejecución un programa en C con varias funciones que pueden ser llamadas desde otros programas. Estos otros programas pueden estar corriendo en otros ordenadores conectados en red.
OBJETIVOS
Objetivo principal
Desarrollar aplicaciones distribuidas con RPC.
Objetivo secundario
Implementar los métodos RPC en un equipo cliente.
Conocer cómo funciona el sistema RPCGEN.
Librerias a utilizar
Rpcgen: un compilador que toma la definición de la interfaz de un procedimiento remoto y genera el “stub” del cliente y el “stub” del servidor.
Gcc.
DESARROLLO
Lo que se va a llevar a cabo es muy sencillo, en este caso se va a realizar la suma de dos números, permitiendo enviar la solicitud de ejecución el cliente al servidor.
Definimos el XDR. Lo primero es definir qué métodos está ofreciendo el servidor así como los parámetros que admite y el tipo de retorno
SUMA.X
struct intpair {
int a;
int b;
};
program ADD_PROG {
version ADD_VERS {
int ADD(intpair)=1;
} = 5;
} = 24;
Luego de esto procedemos a compilar el archivo, para generar los template para el cliente y servidor, además de un makefile.
Modificamos los archivos generados por el comando.
El archivo suma_server.c
#include "suma.h"
int *
add_5_svc(intpair *argp, struct svc_req *rqstp)
{
static int result;
printf ("Llamada al servidor \n");
printf ("valores a sumar: %d, %d\n",argp->a, argp->b);
result = argp->a + argp->b;
printf ("returning: %d\n",result);
return &result;
}
Modificamos el archivo Makefile.suma.x las lineas de codigo
CFLAGS += -g –DRCP_SVC_FG
RPCGENFLAGS = -C
Luego de realizar todos estos pasos procedemos a compilar el programa con
...