From 1a763c53c43d1d7e07ecf066bb0ed3d9dbc73af9 Mon Sep 17 00:00:00 2001 From: andrzejwl Date: Thu, 24 Jun 2021 19:00:28 +0200 Subject: [PATCH] add documentation --- docs.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 docs.md diff --git a/docs.md b/docs.md new file mode 100644 index 0000000..5c8dde9 --- /dev/null +++ b/docs.md @@ -0,0 +1,38 @@ +# Komunikator Tekstowy - Dokumentacja Projektu + +Celem projektu było wykonanie aplikacji czatu w konsoli. +Architektura aplikacji została podzielona na dwie części - kod klienta oraz kod serwera. +Klient komunikuje się z serwerem w celu udostępnienia podstawowych danych (np. nazwa użytkownika, port, na którym klient nasłuchuje czy jest stan online / offline), które potem przekazywane są wszystkim klientom. +Sam czat odbywa się w trybie peer-to-peer, czyli klienci sami zestawiają ze sobą połączenie na podstawie danych otrzymanych od serwera (tj. adres IP, port, na którym uruchomiony jest listener TCP oraz nazwa użytkownika). + +## Zastosowania protokołów komunikacyjnych +- **TCP** - Komunikacja między klientami (tj. wysłanie wiadmości). + Za każdym razem gdy klient chce wysłać do innego klienta wiadomość, zestawiane jest **między nimi** połączenie TCP (każdy klient ma uruchomiony serwer TCP - linia 68 w pliku `client_client.py`). + *Kod klienta* - linia 68 w `client_client.py`. + +- **UDP** - Komunikacja typu multicast. Po uruchomieniu klient zapisuje się do grupy multicastowej i w ten sposób serwer dowiaduje się o przyłączeniu nowego klienta (od tego momentu gdy któryś klient odpyta serwer o listę dostępnych klientów, nowo przyłączony klient będzie znajdował się na tej liście). + *Kod serwera* - linia 131 w `daemon_file.py`. + *Kod klienta*- linia 47 w `client_client.py`. + +- **SCTP** - Sprawdzanie stanu klienta. Za pomocą protokołu SCTP serwer odświeża listę klientów, jeżeli klient się nie zgłasza, jego stan jest zmieniany na "offline". + *Kod serwera* - linia 90 w pliku `daemon_file.py`. + *Kod klienta* - linia 27 w pliku `client_client.py`. + +## Tryb demona +Serwer działa w trybie demona (plik `daemon_file.py`). +Można go uruchomić, zatrzymać bądź zrestartować podając kolejne argumenty: `start`, `stop`, `restart`. + +## Logowanie +Serwer zapisuje logi do pliku `multiproto.log` w bieżącym folderze. + +## Uruchomienie +Do uruchomienia programu wymagane jest zainstalowanie biblioteki `pysctp`. +Można to zrobić za pomocą komendy `pip install pysctp`. +W niektórych dystrybucjach uruchomienie programu serwera może zwracać błąd i przerywać działanie programu. +Jest to spowodowane błędem w bibliotece pysctp, naprawić go można modyfikując jej kod źródłowy w odpowiednim miejscu (szczegóły w pliku `fix.md`). + +Aby uruchomić serwer, należy uruchomić plik deamon serwera: `python3 daemon_file.py start`. + +Do zatrzymania daemona należy użyć argumentu stop: `python daemon_file.py stop`. + +Uruchomienie pliku klienta: `python3 client_client.py`.