Files
2026-01-26 23:55:41 +01:00

2.1 KiB

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:

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

./build/server [plik_konfiguracyjny]

2. Klient

Klient łączy się z serwerem używając id_klienta zdefiniowanego w konfiguracji.

./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.