Ú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
\r
a \n.
Vyřešené úkoly zašlete do 28.2.2018 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.