IRC server implementation in C++
FT_IRC is a 42 school project that implements an IRC (Internet Relay Chat) server from scratch. This project teaches fundamental concepts of:
- Network programming — TCP/IP sockets and connections
- Client-server architecture — Handling multiple clients
- IRC protocol — Implementing IRC commands and responses
- Concurrency — Managing multiple simultaneous connections
- C++ programming — Object-oriented design patterns
- 🔌 TCP/IP Server — Listening for client connections
- 👥 Multiple Clients — Handling simultaneous connections
- 🔐 Authentication — User registration and login
- 💬 Private Messaging — Direct messages between users
- 📢 Channels — Creating and joining chat channels
- 🛡️ Channel Operators — Managing channel permissions
- 📋 IRC Commands — Supporting standard IRC protocol
- C++ compiler (g++ or clang++)
- Make
- Unix-like system (Linux or macOS)
-
Clone the repository:
git clone https://github.com/manugonz42/FT_IRC.git cd FT_IRC -
Compile the project:
make
-
Run the server:
./ircserv [port] [password]
| Parameter | Description |
|---|---|
port |
Port number to listen on |
password |
Server password for authentication |
| Command | Description |
|---|---|
PASS |
Set connection password |
NICK |
Set or change nickname |
USER |
Set username and realname |
JOIN |
Join a channel |
PRIVMSG |
Send private message |
PART |
Leave a channel |
KICK |
Kick user from channel |
INVITE |
Invite user to channel |
TOPIC |
Set or view channel topic |
MODE |
Change channel mode |
# Start server on port 6667 with password "secret"
./ircserv 6667 secret
# Connect with an IRC client
# Server: localhost:6667
# Password: secretContributions are welcome! Please read our Contributing Guide for details.
This project is part of 42 School curriculum.
Manuel González - LinkedIn - [email protected]
Project Link: https://github.com/manugonz42/FT_IRC