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 ! 👈
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
- 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.
1- Compilation :
make
2- Execution :
./ircserv <port> <password>
3- Connection :
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.
To look at my next 42 project !