Documentation
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# Czat IPC
|
||||
|
||||
Aplikacja czatu klient-serwer zaimplementowana w języku C z wykorzystaniem mechanizmów IPC. System obsługuje wiadomości bezpośrednie, czaty grupowe, wiadomości offline oraz zarządzanie użytkownikami.
|
||||
|
||||
## Kompilacja
|
||||
|
||||
Projekt wykorzystuje biblioteke `libconfig` do przetwarzania danych konfiguracyjnych serwera.
|
||||
|
||||
- Instalacja na Debian/Ubuntu: `sudo apt-get install libconfig-dev`
|
||||
- Instalacja na Fedora: `sudo dnf install libconfig-devel`
|
||||
|
||||
Projekt wykorzystuje standardowy plik `Makefile`. Aby skompilować serwer i klienta:
|
||||
|
||||
```bash
|
||||
make all
|
||||
```
|
||||
|
||||
Skompilowane progarmy będą znajdować się w folderze `./build`
|
||||
|
||||
## Użycie
|
||||
|
||||
### 1. Serwer
|
||||
|
||||
Do uruchomienia serwera, wymagany jest plik konfiguracyjny. Jeżeli nie podano ścieżki do pliku, serwer spróbuje wczytać scieżke `./example.conf`
|
||||
|
||||
```bash
|
||||
./build/server [plik_konfiguracyjny]
|
||||
```
|
||||
|
||||
### 2. Klient
|
||||
|
||||
Klient łączy się z serwerem używając `id_klienta` zdefiniowanego w konfiguracji.
|
||||
|
||||
```bash
|
||||
./build/client <id_klienta>
|
||||
```
|
||||
|
||||
- `<id_klienta>`: Musi pasować do pola `id` zdefiniowanego na liście `clients` w pliku konfiguracyjnym (np. "test1", "test2").
|
||||
|
||||
## Komendy Klienta
|
||||
|
||||
Po uruchomieniu klienta dostępne są następujące komendy:
|
||||
|
||||
- `/msg <nick> <wiadomość>`: Wyślij wiadomość bezpośrednią do użytkownika
|
||||
- `/msg #<grupa> <wiadomość>`: Wyślij wiadomość do grupy
|
||||
- `/join <grupa>`: Dołączenie do określonej grupy
|
||||
- `/leave <grupa>`: Opuszczenie danej grupy
|
||||
- `/list active`: Wyświetla listę aktualnie połączonych użytkowników.
|
||||
- `/list all`: Wyświetla listę wszystkich użytkowników
|
||||
- `/list groups`: Wyświetla listę dostępnych grup
|
||||
- `/inbox`: Pobranie wiadomości offline
|
||||
- `/mute <nick|#grupa>`: Wyciszenie użytkownika/grupy
|
||||
- `/unmute <nick|#grupa>`: Odciszenie użytkownika/grupy
|
||||
- `/quit`, `/exit`, `/q`: Wylogowanie i wyjście z programu
|
||||
|
||||
## Struktura Projektu
|
||||
|
||||
- **`server.c`**: Program serwera
|
||||
- **`client.c`**: Program klienta
|
||||
- **`util/`**: Funkcje pomocnicze i moduł ładowania konfiguracji.
|
||||
- **`commands.h`**: Współdzielone definicje struktur protokołu i stałych.
|
||||
- **`example.conf`**: Przykładowy plik konfiguracyjny dla użytkowników i grup.
|
||||
Reference in New Issue
Block a user