Skip to content

manugonz42/FT_IRC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

131 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💬 FT_IRC

IRC server implementation in C++

C++ 42 Project IRC


🎯 About

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

✨ Features

  • 🔌 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

🛠 Requirements

  • C++ compiler (g++ or clang++)
  • Make
  • Unix-like system (Linux or macOS)

▶️ Usage

  1. Clone the repository:

    git clone https://github.com/manugonz42/FT_IRC.git
    cd FT_IRC
  2. Compile the project:

    make
  3. Run the server:

    ./ircserv [port] [password]

Parameters:

Parameter Description
port Port number to listen on
password Server password for authentication

📚 IRC Commands

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

🔧 Examples

# Start server on port 6667 with password "secret"
./ircserv 6667 secret

# Connect with an IRC client
# Server: localhost:6667
# Password: secret

📚 Resources


🤝 Contributing

Contributions are welcome! Please read our Contributing Guide for details.


📄 License

This project is part of 42 School curriculum.


📫 Contact

Manuel González - LinkedIn - [email protected]

Project Link: https://github.com/manugonz42/FT_IRC

About

IRC server implementation in C++

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages