A Custom Internet Relay Chat server developed in C++98 for the 42 Network. This project explores core network programming concepts, specifically Network Inter-Process Communication (NIPC). It provides hands-on practice in managing simultaneous users, non-blocking sockets, and server stability without experiencing downtime or crashing.
Developed by: @0xtbarkan, @Oaitlhaj, and @Noujoum
- Multi-Client Handling: Seamlessly manages dozens of simultaneous connections.
- Channel Management: Full support for creating, joining, and managing IRC channels.
- Standard IRC Commands: Implements core protocols including
PRIVMSG,MODE, and more. - Real-Time Communication: Allows users to interact instantly via their terminals or IRC clients.
Before you begin, ensure your environment meets the following requirements:
- Compiler: C++98 compatible compiler (
g++orclang++) - Build System:
Make - OS: Unix or Linux environment with BSD Socket API support
- Installation :
Clone the repository to your local machine and navigate into the project directory:
git clone https://github.com/0xtbarkan/ft_irc_project ft_irc
cd ft_irc- Compilation :
Build the executable using the provided Makefile. Run this command in the root directory:
make- Running the Server :
Start the server by providing a port number and a server password:
./ircserver <PORT> <SERVER_PASSWORD>The server is now listening for incoming connections.
Once the server is running, you can connect multiple clients to test the communication.
- Using Netcat (Terminal) :
You can use the basic nc command to connect directly from your terminal:
nc 127.0.0.1 <PORT>- Using an IRC Client :
For a better user experience, we recommend using a dedicated IRC client like Limechat or Irssi. Simply configure the client to connect to
127.0.0.1(or your server's IP) using the port and password you specified during launch.
Note for Evaluators: If you want to understand our architectural choices, multiplexing implementation, or have any questions about the code, feel free to ask us during the evaluation.
We relied heavily on the following documentation to ensure our server complies with standard IRC architecture:
| Resource | Description |
|---|---|
| RFC 1459 | Internet Relay Chat Protocol |
| RFC 2810 | IRC Architecture |
| RFC 2811 | IRC Channel Management |
| RFC 2812 | IRC Client Protocol |
| RFC 2813 | IRC Server Protocol |
| Beej's Guide | Guide to Network Programming |
| C++ Reference | Standard C++ Library reference |
| LearnCpp | C++ tutorials and best practices |
A special thanks to AI tools for acting as a learning assistant throughout this project. AI was strictly utilized to break down complex network programming concepts and to rapidly locate specific RFC documentation, significantly speeding up our research phase.