RPC (Remote Procedure Call)
Transkrypt
RPC (Remote Procedure Call)
Utworzenie i uruchomienie maszyny wirtualnej (pod Windows): 1. 2. 3. 4. 5. Uruchomić program Oracle Virtual Box. Z menu wybrać maszyna->nowa (Ctrl+N). Podać dowoloną nazwę, system: Linux, wersja: Fedora (32 bit). Przydzielić pamięć RAM rzędu 1 GB. Wybrać opcję „użyj istniejącego dysku twardego” i wskazać plik z obrazem dysku: C:\wirtualki\Fedora13 x86.vdi 6. Uruchomić utworzoną maszynę wirtualną. Logowanie: Fedora User, hasło: reverse Root, hasło: tooroot Maszyna wirtualna ma dostęp do sieci internet. Pliki (archiwa) z programami można pobrać z poziomu terminala np. poleceniem „wget”. RPC (Remote Procedure Call) 1. Utworzenie interfejsu XDR – plik .x przykład: 2. Kompliacja pliku interfejsu – rpcgen rpcgen –C funkcja.x powinny zostać wygenerowane pliki: funkcja.h, funkcja_clnt.c, funkcja_scv.c, funkcja_xdr (nagłówek i namiastki) 3. Utworzenie szablonu programu serwera: rpcgen –Ss –C funkcja.x >serwer.c analogicznie (-Sc), można utworzyć szablon programu klienta 4. Do wygenerowanego szablonu programu serwera należy wstawić kod procedury (funkcji), która ma być zdalnie wywołana. - parametry we/wy zdalnie wywoływanej funkcji są wskaźnikami do odpowiednich typów danych - zmienna, do której wskaźnik jest zwracany, powinna być zmienną statyczną (dlaczego?) kompilacja, np. gcc –o server –DRPC_SVC_FG serwer.c funkcja_svc.c funkcja_xdr.c -lnsl 5. Tworzenie programu klienta Można, analogicznie jak w przypadku serwera, wykorzystać szablon… - nagłówki: Utworzenie połączenia w RPC: char *host; (np. lokalnie: host="localhost";) CLIENT *clnt; clnt = clnt_create (host,numer_programu, numer_wersji, typ_połącznia); gdzie: numer_programu, numer_wersji – zdeklarowane w interfejsie, typ połączenia: ”udp”, ”tcp”, ew. ”netpath” Zakończenie połączenia: clnt_destroy(clnt); przykładowy kod programu klienta: kompilacja – analogicznie jak w przypadku programu serwera: gcc –o client client.c funkcja_clnt.c funkcja_xdr.c -lnsl