KDP/Lab 2 2022
< КДП
Pređi na navigaciju
Pređi na pretragu
- Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
Nadoknada druge laboratorijske vežbe održana je 22. juna. Postojala je samo jedna grupa.
Postavka
Potrebno je rešiti problem čitalaca i pisaca u distribuiranom okruženju. Čitaoci i pisci predstavljaju klijentske programe koji koristeći centralni server komuniciraju i pristupaju datotekama na serveru.
- Radi pristupanja tekstualnim datotekama koje zahtevaju čitaoci i pisci treba implementirati interfejs
Bookkoji ima metode za dohvatanje i postavljanje imena datoteke, kao i za postavljanje i dohvatanje sadržaja same knjige. Interfejs je dat u prilogu. - Klasa čitaoca (
Reader), čiji je kod dat u prilogu, imamainmetodu i koja se povezuje sa serverom radi čitanja. Serverski port preko koga se komunicira i IP adresa servera se unose kao argumenti komandne linije. Ostali argumenti su datoteke koje je potrebno čitati. Komunikacija sa serverom se obavlja koristeći udaljene pozive procedura u programskom jeziku Java (java.rmipaket). - Klasa pisca (
Writer), čiji je kod dat u prilogu, imamainmetodu i koja se povezuje sa serverom radi upisa. Serverski port preko koga se komunicira i IP adresa servera se unose kao argumenti komandne linije. Ostali argumenti su imena knjiga koje je potrebno proslediti na server. Komunikacija sa serverom se obavlja koristeći mrežno programiranje u programskom jeziku Java (java.netpaket). Koristiti objektne tokove podataka. Na serveru treba da postoji veći broj niti - za svaku konekciju po jedna. Klijenti i server treba sve vreme da drže otvorenu priključnicu kroz koju komuniciraju. Ukoliko na klijentskoj ili serverskoj strani dođe do prekida veze ta nit se prekida i njeni resursi se oslobađaju. - Čitaoci i pisci mogu da pristupaju različitim knjigama, tako da može da se desi da dva pisca u isto vreme upisuju podatke, ali u različite knjige, ili da jedan piše a da drugi čitaju iz različitih knjiga.
- Na serveru se čuvaju podaci o većem broju knjiga.
- Sinhronizacija između niti na serveru se obavlja koristeći monitorsku klasu
ReadersWriters. - Potrebno je implementirati interfejse
BookiRW. Interfejsi koji su dati u prilogu moraju se koristiti kao takvi, bez izmena. - Date
mainmetode u klasama čitaoca i pisca takođe nije dozvoljeno menjati, uz izuzetak zamenenullstvaranjem konkretnog objekta na označenim mestima.