Wykorzystując połączenie TCP, aplikacja klienta ustala adresy komputerów obsługujących usługę (mających włączoną aplikację serwera).
Aplikacja klienta (wyposażona w GUI), zestawia połączenia do serwerów pod wskazane adresy IP (lista lub zakres).
Komputery z aktywną usługą są wyświetlone w aplikacji.
Usługa wyłączenia obejmuje:
- Wyłączenie wszystkich komputerów
- Wyłączenia grupy komputerów
- Wyłaczenia wybranego komputera
Pliki z rozszerzeniem .c są kompilowane za pomocą polecenia make.
Aby uruchomić pliki .py należy przygotować środowisko wirtualne:
git clone --depth=1 https://git.cs.put.poznan.pl/inf151660/sieci2_projekt_mferenc.git
cd sieci2_projekt_mferenc
python3 -m venv .venv
.venv\Scripts\activate
pip3 install -r requirements.txt
# uruchomienie klienta (bez SSL)
python3 src\client\client.py
# ALBO uruchomienie klienta (z SSL)
python3 src\client\client_ssl.py
# kompilacja i uruchomienie serwera (domyślnie bez SSL)
make run
# ALBO kompilacja i uruchomienie serwera (z SSL)
make run_ssl
# w razie potrzeby wygenerowania certyfikatów użyć
make gen_cert
# w razie potrzeby konwersji plików .ui na .py (GUI)
make gen_uiWybrany został protokół TCP, ponieważ zapewnia on:
- możliwość wysyłania konkretnych sekwencji danych (wtedy gdy kolejność transmisji ma znaczenie)
- retransmisję w przypadku błędów
- dostarczenie danych jest gwarantowane
- sprawdzanie poprawności odebrnaych danych
../sieci2_projekt_mferenc/
├── .gitignore
├── Makefile # plik z regułami dla programu Make
├── README.md
├── requirements.txt # plik zawierający informacje dla menadżera pakietów Pythona (pip)
└── src
├── client
│ ├── author_image.png
│ ├── author_ui.py # plik GUI przetłumaczony na j. Python (okno informacji o autorze)
│ ├── author_ui.ui # plik GUI w formacie XML (okno informacji o autorze)
│ ├── __client_base.py # bazowa klasa aplikacji (backend)
│ ├── client.py # klient bez SSL
│ ├── client_ssl.py # klient z SSL
│ ├── documentation.py # plik GUI przetłumaczony na j. Python (okno dokumentacji)
│ ├── documentation.ui # plik GUI w formacie XML (okno dokumentacji)
│ ├── main_ui.py # plik GUI przetłumaczony na j. Python (główne okno aplikacji)
│ └── main_ui.ui # plik GUI w formacie XML (główne okno aplikacji)
└── server
├── server.c # serwer bez SSL
└── server_ssl.c # serwer z SSLKonieczne:
- Podstawowa implementacja klienta
- Podstawowa implementacja serwera
- Przygotowanie Makefile
- Przygotowanie dokumentacji (README.md)
- Podstawowy protokół komunikacji
- Pełen protokół komunikacji
- Bezpieczny protokół komunikacji (OpenSSL) zaimplementowany nie można przetestować
- Zaimplementować wyłaczanie komputera przez aplikację serwera
- Przygotować wstępne GUI (Qt5)
- Pełne GUI klienta (Qt5)
- Funkcjonalne GUI klienta (Qt5)
- Automatyczna konwersja (w Makefile) z .ui do .py (Qt5)
Opcjonalne:
- Aplikacje klienta (z i bez SSLu) dziedziczą z klasy nadrzędnej (__clientbase.py) [dzięki temu kod się nie powtarza]
- Dodać tooltipy
- Dodać zmianę języków
- Dodać wyświetlanie dokumentacji
- Naprawić problem ze skalowaniem interfejsu wymagane dalsze działania