Você está na página 1de 3

Ejercicio 1: Compilacin y evaluacin de

llamadas remotas
Se mostrar el uso del IDL de Sun-RPC (XDR), el funcionamiento del
compilador de interfaces (rpcgen) y el desarrollo de clientes y servidores que
hagan uso de las llamadas remotas. Se evaluar tambin las diferencias de
redimiento entre llamadas locales y remotas.
Ver explicacion del funcionamiento del RPC de Sun en las transparencias del
tema 2 ( enlace [pags. 14 y siguientes])
Se parte de un cdigo de ejemplo que implementa una ''calculadora remota''.
Descarga: rpc1.tar.gz
El cdigo de partida incluye:
calculadora.x: Especificacin XDR del interfaz remoto que exporta las
cuatro operaciones bsicas para enteros (suma, resta, multiplicacin y
divisin)
servidor.c: Implementacin, conforme al esquema esperado por
el skeleton de Sun-RPC, de las 4 funciones exportadas
cliente.c: Ejemplo de cliente donde se muestra la forma en que realizan
las llamadas remotas a las funciones remotas exportadas.
Pasos a seguir
1. Descomprimir el paquete.
2. $ tar xzvf rpc1.tar.gz
3. $ cd rpc1
4. Comprobar el contenido del fichero calculadora.x con el interfaz remoto
o Usa el esquema de parmetros ''clsico'' que slo permite un
argumento de entrada en los procedimientos remotos
o Por esa razn se define la estructura entrada para contener los dos
operandos (arg1 y arg2) que se pasan a cada una de las cuatro
operaciones
5. Compilar con rpcgen la definicin del interfaz remoto
6. $ rpcgen calculadora.x
Se generan los siguientes ficheros.
o calculadora.h: Fichero de cabecera con constantes y las
definiciones de las estructuras usadas como parmetros de entrada y
como valores de salida.
o calculadora_clnt.c: Cdigo C con la implementacin del stub
o calculadora_svc.c: Cdigo C con la implementacin del skeleton
o calculadora_xdr.c: Cdigo C con la implementacin de las rutinas
XDR para aplanar/desaplanar los argumentos y el valor de retorno
Se pueden abrir con un editor y comprobar su estructura, las definciones
de tipos de datos, los prototipos de las funciones del stub y ver cmo son
las llamadas realizadas en stub y skeleton.
7. Compilar y lanzar el servidor
8. $ gcc -o servidor servidor.c calculadora_svc.c calculadora_xdr.c
9. $ ./servidor &
Se pueden comprobar los programas RPC registrados en
el portmapper de una mquina con la orden rpcinfo.
$ rpcinfo -p
Muestra el nm. de programa (en decimal) junto su nm. de versin y sus
puertos de escucha (tcp y udp).
10. Compilar y ejecutar el cliente de ejemplo (en un terminal distinto)
11. $ gcc -o cliente cliente.c calculadora_clnt.c calculadora_xdr.c
12. $ ./cliente localhost &
Se puede probar a ejecutar las funciones remotas de otra mquina del
laboratorio poniendo su direccin IP en lugar de ''localhost''
Tareas a realizar
1. Generar con rpcgen -a calculadora.x los prototipos de cliente y servidor
(calculadora_server.c, calculadora_client.c) y compararlos con las
implementaciones aportadas.
2. Evaluar el rendimiento de las llamadas remotas comparndolo con el de
las llamadas locales.
o Se incluye el fichero test_local.c que realiza 250.000 de llamadas
a una funcin sumar local y evala el tiempo consumido.
o $ gcc -o test_local text_local.c
o $ ./text_local
o A partir de test_local.c y de cliente.c se pide:
Construir un fichero test_remoto.c equivalente que realice
250.000 de llamadas remotas a la funcin sumar_1() del
servidor RPC.
Compilacin:
$ gcc -o test_remoto test_remoto.c calculadora_clnt.c
calculadora_xdr.c
$ ./test_remoto localhost
Comprobar el tiempo invertido en las llamadas remotas a la
propia mquina y en llamadas remotas a otra de las mquinas
del laboratorio que tambin exporte el
interfaz calculadora.x.

Você também pode gostar