Professional Documents
Culture Documents
Buenos dias compaeros, el dia de hoy les traigo un manual sobre cmo realizar RPC
(Llamado de procedimiento remoto ) en linux con lenguaje C. Para realizar esto tenemos
primero que saber para qu nos sirve esto, y qu es RPC.
El codigo lo pueden conseguir en mi pagina.
RPC(Remote Procedure Call) es un protocolo que nos permite ejecutar el cdigo de algun
otro programa desde otra pc, es decir yo puedo desde mi pc llamar a una aplicacin en otra
pc (cualquiera en el mundo, sabiendo su direccin IP), esto con el fin de aplicar los sistemas
distribuidos en nuestras aplicaciones, en otras palabras que una sola mquina no realiza todo
el trabajo para ejecutar un software, algunas personas vern esto un poco intil (pues algunos
an no hemos desarrollado algoritmos muy complejos) pero puede ser de gran importancia
en las aplicaciones mviles, pues como saben algunos telfonos actuales an no tienen una
gran capacidad de procesamiento, entonces podremos disear nuestra aplicacin para que
se realice un procedimiento en algun servidor externo y nuestra aplicacin haga solo cosas
sencillas como interfaz con usuario u otros.
Pasos:
1. Primero creamos un directorio donde colocaremos todos los archivos, en mi caso cree
un directorio llamado RPC en Documentos, quedando mi ruta as:
/home/jamper91a/Documentos/RPC/
2. Debemos crear un archivo que contendr el cdigo que deseamos llamar, en este caso
ser un programa que se encarga de sumar dos nmeros, para eso creamos un archivo
llamado suma.x que contendr el siguiente cdigo:
struct sumandos
{
int sumando1;
int sumando2;
};
program PROGRAMA_SUMA {
version VERSION_SUMA {
int suma (sumandos) = 1;
} = 1;
} = 0x20000001;
Para poder implementar RPC, las funciones solamente pueden recibir un parmetro,
del tipo nativo (int,long,etc) o una estructura. Pero debido a que muchas funciones
necesitan ms de un parmetro, entonces necesitamos crear una estructura que
contenga los parmetros que deseemos.
En el ejemplo se cre una estructura llamada sumandos, que contiene los nmeros a
sumar.
Para poder ver la explicacin completa del cdigo puedes visitar chuidiang.
Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com2
programa_suma_1(char *host)
{
CLIENT *clnt;
int *result_1;
sumandos suma_1_arg;
/**
Editor los valores que tendra la estructura
*/
printf("Por favor digite los elementos a sumar: \n a: ");
scanf("%d",& suma_1_arg.sumando1);
printf("b: ");
scanf("%d",& suma_1_arg.sumando2);
#ifndef
#endif
DEBUG
clnt = clnt_create (host, PROGRAMA_SUMA, VERSION_SUMA, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
/* DEBUG */
result_1 = suma_1(&suma_1_arg, clnt);
if (result_1 == (int *) NULL) {
#ifndef
#endif
En el cdigo anterior vern unas partes rojas, esas son el aadido para la guia de
chuidiang, en esas porciones de cdigo, me encargo de preguntar al usuario los
nmeros a sumar, y de mostrar el resultado.
Ante cualquier inquietud, pueden visitar mi pgina, y descargar el cdigo fuente del
archivo suma_client.c y suma_server.c
Ejecucin:
1. Para ejecutar el cdigo, debemos primero hacer una compilacin para crear los
ejecutables, para eso digitamos:
make -f Makefile.suma
2. Luego iniciamos el servidor RPC, para eso digitamos por consola
sudo ./suma_server
3. Y luego para poder llamar al servidor debemos ejecutar nuestro cliente de la siguiente
manera sudo ./suma_client host, donde host es la direccion del server, en este caso
localhost
sudo./suma_client localhost