Seminář 2 - Síťové služby
Zdroje
- Text dr. Krajči k semináři
- Doprovodné zdrojové kódy k textu. S úpravami.
- Working with URLs
- All about sockets
- Herbert Schildt, 2022
- Java, The complete Reference, Twelfth Edition
- Knihovna PřF: M2/1756
- Part II, Chapter 24
- pp. 795 - 818
Úkol č. 2
- Vyřešené úkoly zašlete do 06.03.2023 17:00 CET na email tomas.urbanec@upol.cz s předmětem: JJ2-2.
- Zasílejte pouze zdrojové kódy.
- Pokud chcete zdrojové kódy poslat zkomprimované, použijte buď formát zip nebo kombinaci tar+gz.
- 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
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.
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.
Čtení zpráv
- Uložené zprávy si klient může vyzvednout zásláním:
READ
- Přičemž server zašle odpověď ve tvaru:
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.
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 - návrh řešení je na vás.
- Zasílané zprávy mohou být libovolné řetezce neobsahující znaky
\r
a\n
.