Zdalne wywołanie procedury
description
Transcript of Zdalne wywołanie procedury
© DSRG 2004
Systemy Rozproszone - Zdalne wywołanie procedury 1
www.cs.agh.edu.pl
Zdalne wywołanie procedury
Implementacja Sun RPC
Ćwiczenie laboratoryje:Jacek Cała <[email protected]>Aleksander Motyka
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 2
© DSRG 2004
Pytania• Zadania mechanizmu RPC?• Co to jest operacja powtarzalna
(ang. idempotent) ?• Cele wprowadzenia specyfikacji XDR?• Czym jest łącznik (ang. stub)
klienta/serwera?
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 3
© DSRG 2004
Specyfikacja usług RPC• Numer programu – liczba 32-bitowa
– 0000 0000–1fff ffff – SunRPC– 2000 0000–3fff ffff – definiowane przez
użytkownika– 4000 0000–5fff ffff – tymczasowe– 6000 0000–ffff ffff – zarezerwowane
• Numer wersji – liczba 32-bitowa• Numer procedury – liczba 32-bitowa
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 4
© DSRG 2004
Program rpcbind• Serwer dokonujący konwersji numerów
programów RPC na numer portu tzw. portmapper; port 111
demon rpcbind
serwer
klient
[1]
[2] [3]
rejestracja usługi
odwzorowanie adresu wywołanie
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 5
© DSRG 2004
Polecenie rpcinfo• Informacje nt. usług zarejestrowanych w rpcbind.– wyświetlenie wszystkich usług na
wskazanym serwerze– wyświetlenie usług w sposób zwarty [-s]– wyświetlenie wybranej usługi [-l]– usunięcie wybranego serwisu [-d]
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 6
© DSRG 2004
Polecenie rpcgen• Jako wejście pobiera plik specyfikacji usług
w formacie XDR.• Jako wyjście generuje kod stuba serwera
i klienta w języku C.
service.x
client.c
service_proc.c
service.h
service_cltn.c
service_svc.c
libnsl
service
client
cc
cc
rpcgen
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 7
© DSRG 2004
Polecenie rpcgen• Ukrywa niskopoziomowe wywołania
biblioteki RPC:– clnt_*– svc_*– rpc_*– xdr_*
• Generuje gotowe funkcje na potrzeby serwisu oraz klienta
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 8
© DSRG 2004
Ważniesze funkcje• CLIENT* clnt_create(
const char* host,const rpcprog_t prognum,const rpcvers_t versnum,const char* nettype)
– zwraca zmienną typu CLIENT, która będzie używana przy generowaniu wywołań do serwera.
• bool_t clnt_control(CLIENT* clnt, const uint_t req, char* info)
– pozwala na odczyt/zmianę parametrów zmiennej typu CLIENT
• void clnt_destroy(CLIENT* clnt)– usuwa utworzoną strukturę klienta
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 9
© DSRG 2004
Zadanie 1• Użycie rpcgen dla przykładowej
specyfikacji db.x– rpcgen -a -C db.x– gmake -f makefile.db
• Analiza wygenerowanych plików– plik nagłówkowy– przykładowe implementacje klienta i
serwera
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 10
© DSRG 2004
Zadanie 2• Opracowanie klienta odczytującego z
bazy rekord:– RecordName == autor-02– RecordID == 1
• Baza umieszczona została na komputerze galaxy oraz jasmin
www.cs.agh.edu.pl
Systemy Rozproszone - Zdalne wywołanie procedury 11
© DSRG 2004
Zadanie 3• Napisanie własnego programu usługi:
– podnoszącego przekazaną liczbę rzeczywistą do kwadratu,
– procedura usługowa powinna generować na standardowe wyjście komunikat o jej wywołaniu.
• Program powinien umieszczony w pliku db.x
• UWAGA! Numery programów muszą być unikalne