# IRC Server and Load Testing Tool ## Overview This project consists of an IRC server implementation and a load testing tool designed to simulate multiple IRC clients. The server utilizes the epoll mechanism for efficient handling of client connections and commands, while the load testing tool measures the performance of the server under heavy load. ## Features - **IRC Server**: Implements basic IRC functionalities including user registration, channel creation, message broadcasting, and more. - **Load Testing Tool**: Simulates multiple IRC clients connecting to the server, joining channels, and sending messages to evaluate server performance. - **Concurrency**: Utilizes pthreads for handling multiple clients simultaneously. - **Performance Metrics**: Measures total messages sent, bytes sent, and received during the load test. ## Requirements - C Compiler (gcc) - POSIX Threads Library - Standard C Libraries ## Installation 1. Clone the repository: ```bash git clone cd ``` 2. Compile the server and load testing tool: ```bash make ``` ## Usage ### Running the IRC Server To start the IRC server, run the following command: ```bash ./irc_server ``` The server will listen on port 6667 by default. ### Running the Load Testing Tool To execute the load testing tool, run: ```bash ./load_test ``` This will simulate multiple clients connecting to the IRC server and sending messages. ## Performance Metrics After running the load test, the following metrics will be displayed: - Total time taken for the test - Total messages sent - Messages per second - Total bytes sent and received - Send and receive rates in MB/s