2. seminář - Síťové služby

TEACHINGJJ2

Materiály k semináři

Úkoly

Úkol odevzdejte emailem do 8. 3. 2022 17:00 CET na email roman.vyjidacek@upol.cz s předmětem JJ2_02.

  • 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>
A dostane od serveru odpověď OK, nebo ERR podle toho, jestli se uživateli podařilo přihlásit.

3. Čtení zpráv

Uložené zprávy si klient může vyzvednout zásláním:

 FROM <username>: <message-1>
 FROM <username>: <message-2>
 FROM <username>: <message-3>
 OK
Pokud je zpráva přečtena, je odstraněna ze serveru.

4. Odhlášení

Odhlášení klienta se provede zasláním:

 LOGOUT

Server 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.