Elosztott rendszerek labor — RPC

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


<style> code.pre { white-space:pre; display:block; } </style>


msg.x

struct msgstr { string from<16>; string to<16>; string msg<256>; };   program MSGPROG { version MSGVERS { int SEND(msgstr) = 1; string GET(string) = 2; int DEL(string) = 3; } = 1; } = 0x20000099;

Forditas: =rpcgen -a msg.x=

=msg.x= vegen

\n

-nek kell lennie, kulonben nem fordul. Ujraforditas eseten torolni kell a keletkezett file-okat.

msg_server.c

  1. include <string.h>
  2. include <stdio.h>

  char *user[] = {"aaa", "bbb", "ccc"}; char msgs[] = {"", "", ""};   int send_1_svc(msgstr *argp, struct svc_req *rqstp) { static int result;   char str[256]; result = -1; int i;   for (i=0; i<3; i++) if (strcmp(argp->to, user[i])==0) { sprintf(str, "From: %s\n%s\n", argp->from, argp->msg); msgs[i] = strdup(str); puts(msgs[i]); result = 0; }   return &result; }

msg_client.c

result_1 = send_1(&send_1_arg, clnt); if (result_1 == (int*) NULL) { clnt_perror(clnt, "call failed"); }

helyett

switch (*argv[2]) { case 's': send_1_arg.from = argv[3]; send_1_arg.to = argv[4]; send_1_arg.msg = argv[5]; result_1 = send_1(&send_1_arg, clnt); if (result_1 == (int*) NULL) { clnt_perror(clnt, "call failed"); } printf("%d\n", *result_1); break; }

result_2 = ...

-tol kezdodo 8 sort kikommentezni.

msgprog_1()

-nek at kell adni az =argv= parametert is.

Onallo feladat - labirintus

  • interfesz:
    Ezen a helyen volt linkelve a(z) maze.x nevű fájl ("maze.x" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/ElosztottLaborRPC oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)
    • ways.n: -1 ha eszakra fal van, 0 ha szabad, 1 ha cel
    • ways.s
    • ways.e
    • ways.w
    • ways.control: -1 ha falra probaltunk lepni, 0 ha szabad mezore leptunk, 1 ha a celra leptunk

    • void init(char*): pozicio beallitas, usernev atkuldes
    • ways north(): eszakra lepunk
    • ways south()
    • ways east()
    • ways west()
  • szerver:
    Ezen a helyen volt linkelve a(z) maze_server.c nevű fájl ("maze_server.c" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/ElosztottLaborRPC oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)
(Pernek Akos)
  • kliens:
    Ezen a helyen volt linkelve a(z) maze_client.c nevű fájl ("maze_client.c" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/ElosztottLaborRPC oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)
(Pallos Peter)
  • forditas:

-et letolteni

    • =rpcgen -a maze.x=
    • Ezen a helyen volt linkelve a(z) maze_server.c nevű fájl ("maze_server.c" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/ElosztottLaborRPC oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)

-t es

Ezen a helyen volt linkelve a(z) maze_client.c nevű fájl ("maze_client.c" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/ElosztottLaborRPC oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)

-t felulirni a letoltottel

    • =make -f Makefile.msg=

-- Peti - 2006.04.07.