A high-performance, feature-rich multithreaded chat server implemented in modern C++ using epoll, sockets, threads, and synchronization primitives. Supports multiple rooms, user authentication, colored output, and administrative commands.
- β Multithreaded server using std::thread
- β Epoll-based I/O multiplexing for efficient socket management
- β Room-based chat (join, create, leave rooms)
- β User registration and login with basic auth
- β Admin controls: kick users, private rooms
- β Colored messages: SYSTEM, PRIVATE, USER
- β Thread-safe logging with timestamps
- β Server statistics: uptime, total connections, messages
- β Graceful shutdown (Ctrl+C)
chat-server/
βββ Client.cpp # Complete chat server logic
βββ Server.cpp # Optional extended version with CLI args and monitoring
βββ README.md # Project documentation
- g++ (C++17+)
- Linux (epoll is Linux-specific)
g++ Client.cpp -o chat_server -pthreadOr if you're using the advanced version:
g++ Server.cpp -o chat_server -pthread./chat_server [port]Default port: 8888
Example:
./chat_server 8888Use telnet or nc (netcat):
telnet 127.0.0.1 8888/login <user> <pass>β Log in/register <user> <pass>β Register/join <room> [pass]β Join room/create <room> [pass]β Create new room/listβ List rooms/whoβ See members in current room/msg <user> <msg>β Private message/kick <user>β Kick user (admin only)/statsβ Server stats/quitβ Disconnect
- SYSTEM: Yellow
- PRIVATE: Magenta
- USER: Cyan timestamp + green username
- Stored in
chat_server.log - Timestamped and thread-safe
./chat_server -p <port> -l <log_file> -vFlags:
-p/--port: Set port-l/--log: Set log file path-v/--verbose: Enable verbose logging
[12:01:01] [SYSTEM] User Darelene joined the room
[12:01:02] Darelene: Hello everyone!
[12:01:05] [PRIVATE] Admin: Please check your DM