Zadanie 1 --------- Termin: 17.03.2001 godz. 23.59 Nalezy napisac klienta i serwer dla uproszczonej wersji MUDa. Bardziej szczegolowo wyglada to tak: - klient komunikuje sie z serwerem przez polaczenie TCP, serwer odpowiada czesciowo przez polaczenie TCP, czesciowo przez UDP. - wystarczy, aby implementacja umozliwiala uruchamianie jednego serwera na danym komputerze, implementacja musi jednak umozliwiac uruchamianie wielu klientow na tym samym komputerze jak i wielu klientow na wielu komputerach - jednoprocesowy i jednowatkowy serwer (funkcje fork i clone nie moga byc uzyte) nasluchuje na okreslonym porcie TCP obslugujac zgloszenia nowych klientow i polecenia juz polaczonych - klient najpierw otwiera gniazdo UDP, potem laczy sie z serwerem podajac port swojego gniazda UDP, identyfikator uzytkownika i jego haslo, serwer weryfikuje ich poprawnosc i zapewnia, ze nie ma 2 uzytkownikow o tym samym identyfikatorze (jesli istnieje poprzednia sesja danego uzytkownika to jest ona rozlaczana) - klient dostaje polecenia od uzytkownika, wysyla je do serwera i wyswietla wyniki ich wykonania, wyswietla takze przychodzace niezaleznie komunikaty serwera - wszystko wspolbieznie! - swiat MUDa sklada sie z co najmniej 4 lokacji na siatce kwadratowej, kazda lokacja posiada opis (dosyc dlugi!) i co najmniej jedno z 4 wyjsc (North,East,South,West) - opisy lokacji moga byc baaaardzo duze wiec zeby zmniejszyc obciazenie lacza (problem tzw. "lagu") opisy sa wysylane z serwera do klienta przez polaczenie UDP (i moga ginac! nie implementujemy zapewnienia dotarcia pakietu UDP do klienta) - reszta komunikacji serwer - klient odbywa sie przez polaczenie TCP - komendy dostepne dla uzytkownika: 1. look - zobacz opis danej lokacji serwer wysyla opis do klienta przez UDP 2. say <tekst> - powiedz tekst slyszalny tylko dla osob w tej samej lokacji serwer wysyla komunikat "<identyfikator> mowi: <tekst>" przez TCP do klientow wszystkich uzytkownikow przebywajacych w tej samej lokacji co mowiacy (oprocz niego!), a uzytkownik mowiacy dostaje potwierdzenie wykonania polecenia od swojego klienta przez komunikat "Mowisz: <tekst>" 3. chat < tekst> - powiedz tekst slyszalny dla wszystkich serwer wysyla komunikat "[CHAT] <identyfikator> mowi: <tekst>" przez TCP do klientow wszystkich uzytkownikow (z "chatujacym" uzytkownikiem wlacznie). 4. n,e,s,w - zmien lokacje (idz w okreslonym kierunku). serwer wysyla do klientow uzytkownikow pozostajacych w pomieszczeniu komunikat "<identyfikator> odchodzi na <kierunek>." przez TCP, a klient uzytkownika automatycznie dostaje opis nowej lokacji (przez UDP). 5. quit - zakoncz sesje klienci uzytkownikow pozostajacych w lokacji dostaja przez TCP komunikat "<identyfikator> opuscil ten swiat." UWAGA! - program powinien byc BARDZO dokladnie skomentowany! - do programu powinna byc dolaczona minimalna dokumentacja uzytkowa