63 lines
2.1 KiB
Markdown
63 lines
2.1 KiB
Markdown
# 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.
|