You are on page 1of 1

КОНКУРЕНТНО И ДИСТРИБУИРАНО ПРОГРАМИРАЊЕ ГРУПА 8

Лабораторијска вежба број 5 – 24.06.2014. године

Задатак: Dining Savages Problem и мрежно програмирање


1. Потребно је решити проблем људождера који једу у дистрибуираном
окружењу. Људождери и кувар представљају клијентске програме који
користећи централни сервер комуницирају и приступају дистрибуираним
објектима, текстуалним датотекама, на серверу.
2. Креирати пакет у који ће бити стављени сви материјали. Назив пакета
треба да буде: rs.ac.bg.etf.kdp.imeprezimeindeks.
3. Ради приступања текстуалним датотекама које захтевају људождери и
кувар треба имплементирати интерфејс Pot који има методе за дохватање
и постављање хране у лонац. Интерфејс је дат у прилогу.
4. Класа за људождера (Savage), чији је код дат у прилогу, има main методу
и која се повезује са сервером ради уписа. Серверски порт преко кога се
комуницира и IP адреса сервера се уносе као аргументи командне лини.
Последњи аргументи су имена датотека (хране) које је потребно
дохватити и сачувати локално.
5. Класа за кувара (Cook) чији је код дат у прилогу, има main методу и која
се повезује са сервером ради уписа. Серверски порт преко кога се
комуницира и IP адреса сервера се уносе као аргументи командне лини.
Остали аргументи су број итерација колико кувар дуго треба да спрема
храну, колико хране треба да припреми у свакој итерацији, као и имена
хране (датотека) које је потребно убацити у заједничке казане.
6. Кувар и људождери могу да приступају различитој храни у исто време. На
серверу треба водити рачуна о томе да када кувар ставња неку храну он
је ставља у неки бафер који прима само храну са тим именом. У једном
баферу се налази више паковања хране која сва имају исто име. Када
људождер дохвата неку храну онда се та храна дохвата из бафера који
чува храну са датим именом, и исто важи и за кувара.
7. Синхронизација између нити на серверу се обавља користећи мониторску
класу DiningSavages коју је такође потребно имплементирати.
8. На клијентској страни је потребно имплементирати интерфејсе Food и
Pot.
9. Комуникацију између клијената и сервера реализовати користећи
удаљене позиве метода у програмском језику Јава (java.rmi пакет).

You might also like