Files
C-IPC/README.md
T
2026-01-26 23:55:41 +01:00

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.