Internet Relay Chat or IRC is a text-based communication protocol on the Internet. It offers real-time messaging that can be either public or private. Users can exchange direct messages and join group channels.
In this project, our focus is on creating an IRC server in C++98. The server should be able to efficiently handle multiple users, ensuring smooth communication. We need to make sure that it can work with any of the existing IRC clients. The key features of our IRC server include user authentication, joining chat channels, and private messaging. Also, we need to differentiate between operators (mainly channel operators) and regular users.
IRC, short for Internet Relay Chat, is a communication protocol that enables real-time text messaging over the internet. It was developed in the late 1980s and continues to be used today in some communities or even organizations. IRC operates on a client-server model, where users connect to an IRC server using client software, allowing them to join channels and engage in conversations. If you are familiar with Discord, you can think of IRC as the old-school, text-only version of it. Both platforms facilitate real-time communication, but IRC takes a more straightforward and minimalistic approach.
Before you start this project, it's important to understand the following concepts:
- Socket programming
- I/O Multiplexing
There's a bunch of good resources online, so DYOR! Here are some of the resources that I found useful:
Also, to fully understand how IRC actually works, you are encouraged to read the following RFCs:
There's also one particular documentation you can read to understand how IRC works in practice:
For our project, we implemented these commands:
PASS
NICK
USER
PING
PONG
OPER
QUIT
JOIN
PART
NAMES
LIST
TOPIC
INVITE
KICK
PRIVMSG
NOTICE
MODE
MOTD
Here is the presentation deck for this project: ft_irc Peer evaluation
We also created a flow chart of our IRC server: IRC Server Flow Chart