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