Úkoly č. 2
- Implementujte jednoduchou síťovou službu pro posílání zpráv.
- Implementujte serverovou i klientskou část.
- Komunikace klienta se serverem by měla probíhat podle následujícího protokolu.
Protokol
1. Příhlášení
Klient se přihlásí k serveru zasláním:
CONNECT <username> <password>A dostane od serveru odpověď
OK, nebo ERR podle toho, jestli se uživateli podařilo přihlásit.
2. Poslání zprávy
Uživatel může zaslat zprávu jinému uživateli tím, že klient serveru zašle text ve tvaru:
MSG FOR <username>: <message>Pokud uživatel existuje, je zpráva pro něj uložena na straně serveru a je vrácena odpověď
OK, jinak je vrácena odpověď ERR.
3. Čtení zpráv
Uložené zprávy si klient může vyzvednout zásláním:
READPřičemž server zašle odpověď ve tvaru:
FROM <username>: <message-1> FROM <username>: <message-2> FROM <username>: <message-3> OKPokud je zpráva přečtena, je odstraněna ze serveru.
4. Odhlášení
Odhlášení klienta se provede zasláním:
LOGOUTServer uživatele odhlásí, vrací
OK a uzavře spojení.
Příklad komunikace
S: <server naslouchá> C: <klient se připojí> C: CONNECT alice nbusr123 S: OK C: READ S: FROM bob: hello alice! FROM chuck: this is a chuck's message. OK C: READ S: OK C: MSG FOR bob: hello bob! S: OK C: MSG FOR david: hi david S: ERR C: LOGOUT S: OK S: <server ukončí spojení>
Poznámky
- Seznam uživatelů a jejich hesel bude uložen na straně serveru, jak to vyřešíte, je čistě na vás.
- Zasílané zprávy mohou být libovolné řetezce neobsahující znaky
\ra \n.
Vyřešené úkoly zašlete do 1.3.2017 13:00 CET na email petr.krajca (zavináč) upol.cz s předmětem: ZP4JV02. Zasílejte pouze zdrojové kódy. Pokud chcete zdrojové kódy poslat zkomprimované, použijte buď formát zip nebo kombinaci tar+gz.