KDP/Lab 2 nadoknada 2022

Izvor: SI Wiki
< КДП
Datum izmene: 27. jul 2022. u 21:08; autor: KockaAdmiralac (razgovor | doprinosi) (Okej izgleda sam u potpunosti izgubljen)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
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 Book koji 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, ima main metodu 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.rmi paket).
  • Klasa pisca (Writer), čiji je kod dat u prilogu, ima main metodu 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.net paket). 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 Book i RW. Interfejsi koji su dati u prilogu moraju se koristiti kao takvi, bez izmena.
  • Date main metode u klasama čitaoca i pisca takođe nije dozvoljeno menjati, uz izuzetak zamene null stvaranjem konkretnog objekta na označenim mestima.

Rešenje