120 likes | 311 Views
Zdalne wywołanie procedury. Implementacja Sun RPC. Ćwiczenie laboratoryje: Jacek Cała <cala@cs.agh.edu.pl> Aleksander Motyka <amotyka@agh.edu.pl>. Pytania. Zadania mechanizmu RPC? Co to jest operacja powtarzalna (ang. idempotent ) ? Cele wprowadzenia specyfikacji XDR?
E N D
Zdalne wywołanie procedury Implementacja Sun RPC Ćwiczenie laboratoryje: Jacek Cała <cala@cs.agh.edu.pl> Aleksander Motyka <amotyka@agh.edu.pl> www.cs.agh.edu.pl
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
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
Program rpcbind • Serwer dokonujący konwersji numerów programów RPC na numer portu tzw. portmapper; port 111 demon rpcbind [1] serwer rejestracja usługi [2] [3] odwzorowanie adresu wywołanie klient www.cs.agh.edu.pl
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
Polecenie rpcgen • Jako wejście pobiera plik specyfikacji usługw formacie XDR. • Jako wyjście generuje kod stuba serwerai klienta w języku C. service_proc.c service cc service_svc.c service.x service.h libnsl rpcgen service_cltn.c client.c client cc www.cs.agh.edu.pl
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
Ważniesze funkcje • CLIENT*clnt_create(const char*host,const rpcprog_tprognum,const rpcvers_tversnum,const char*nettype) • zwraca zmienną typu CLIENT, która będzie używana przy generowaniu wywołań do serwera. • bool_tclnt_control(CLIENT*clnt, const uint_treq, char*info) • pozwala na odczyt/zmianę parametrów zmiennej typu CLIENT • voidclnt_destroy(CLIENT*clnt) • usuwa utworzoną strukturę klienta www.cs.agh.edu.pl
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
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
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 www.cs.agh.edu.pl