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