Skip to content

LaOuede/42-ft_irc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ft_irc

The ft_irc project involves the implementation of an Internet Relay Chat (IRC) server and client. The purpose is to create a scalable and efficient server that can handle multiple clients concurrently. The project encompasses features such as channel creation, private messaging, and handling various IRC commands, fostering a comprehensive understanding of networking, system calls, and inter-process communication.

Go to 42 Québec to discover the course ! 👈


What I've learned 📚

I've acquired basic knowledge in :

  • Internet Relay Chat (IRC) Protocol: Understanding the IRC protocol, including its commands, message formats, and server-client interactions.
  • Networking Protocols: Knowledge of TCP/IP networking protocols, including how data is transmitted over the internet using TCP sockets.
  • Socket Programming: Understanding how to create, bind, listen on, accept, connect to, read from, and write to sockets in C programming.
  • Error Handling and Recovery: Strategies for detecting, reporting, and recovering from errors in network communication, including graceful shutdowns and error logging.
  • Testing and debugging

If I had to do it all over again 🗒

  • I would create a User class rather than a structure in the server class.
  • I would optimize the use of the abstract class ACommand.
  • I would group together all error and reply definitions in a .hpp file.

Usage 🛠

1- Compilation :

make

2- Execution :

./ircserv <port> <password>

3- Connection :

Screen Shot 2024-02-06 at 9 01 39 AM

Commands implemented 💻

INVITE: Allows inviting a user to join a specific channel.
JOIN: Allows a user to join an existing channel.
KICK: Allows kicking a user from a given channel.
MODE: Allows modifying the modes of a user or a channel.

  • Flag i: Enables/Disables the invitation-only mode of a channel.
  • Flag k: Enables/Disables the password of a channel.
  • Flag l: Enables/Disables a user limit in a channel.
  • Flag o: Grants/Revokes operator rights of the channel.
  • Flag t: Enables/Disables restrictions for modifying the topic of a channel by a user.

NAMES: Lists all of the nicknames on the server.
NICK: Allows a user to change their nickname.
PART: Allows a user to leave a channel.
PASS: Allows a client to provide a password to identify with the server.
PING: Used to test the presence of an active client.
PRIVMSG: Sends a message to the specified user or channel.
TOPIC: Sets message as the channel topic.


Collaborators 👨🏼‍🚀

This project was realized as a team effort with TwindZ and Prezcoder 🚀


To look at my next 42 project !

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •