A lightweight Internet Relay Chat (IRC) server implementation in C++, developed as part of the 42 curriculum.
IRC is a server implementation that enables real-time communication between multiple clients. This project focuses on understanding network programming, socket communication, and implementing the IRC protocol specifications.
- User authentication and registration
- Channel creation and management
- Private messaging between users
- Channel operator privileges
- Client connection handling
/nick
: Set or change nickname/join
: Join a channel/privmsg
: Send private messages/quit
: Disconnect from server/part
: Leave a channel/topic
: Set/view channel topic/mode
: Set channel/user modes/kick
: Remove user from channel/invite
: Invite user to channel
- TCP/IP socket communication
- Multiple client connections
- Real-time message broadcasting
- Error handling and recovery
- Protocol compliance
- C++ compiler (C++98 standard)
- Make
- POSIX-compliant operating system
# Clone the repository
git clone git@github.com:lciullo/IRC.git
cd IRC
# Compile the project
make
# Start the server
./ircserv <port> <password>
# Connect using a client (e.g., netcat)
nc localhost <port>
- Implement the IRC protocol according to specifications
- Handle multiple client connections simultaneously
- Manage channels and user permissions
- Process IRC commands and responses
- Ensure secure user authentication
- Implement proper error handling
- Handle network communication effectively
ft_irc/
βββ src/
β βββ main.cpp
β βββ Server.cpp
β βββ Client.cpp
β βββ Channel.cpp
β βββ Command.cpp
β βββ Utils.cpp
βββ include/
β βββ Server.hpp
β βββ Client.hpp
β βββ Channel.hpp
β βββ Command.hpp
β βββ Utils.hpp
βββ Makefile
βββ README.md
- Lisa Ciullo - @lciullo
- ClΓ©mence Llovio - @clemllovio
- Aymeric Jakubczyk - @ajakubcz
This project provided valuable experience in:
- Network programming and socket communication
- Multi-client server architecture
- Protocol implementation and compliance
- Real-time data transmission
- User authentication and security
- Error handling in networked applications
- Collaborative development practices
- Server class manages socket connections and client handling
- Client class handles user state and authentication
- Channel class implements room management and privileges
- Command handler processes IRC protocol messages
- Utils provide helper functions for common operations
This project is part of the 42 school curriculum.
- IRC Protocol documentation
- 42 School