A simple Internet Relay Chat (IRC) server, that follows the Modern IRC Client Protocol and supports multiple clients, channels and essential IRC features.
This project is part of the Hive Helsinki core curriculum where we implemented an Internet Relay Chat (IRC) server with essential features and multiple client connections.
We did not implement an IRC client, but instead used Irssi as a reference to connect to the server and test the features while development.
The project is implemented in C++ with the goal to learn how to implement a server, use sockets and handle client-server communication.
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.
IRC clients connect to IRC servers in order to join channels. IRC servers are connected toghether to form a network.
- Multiple clients support
- Nickname change support
- Channels with topic management
- Private messages between users
- Operators and administrative privileges
- Authentication via password
- Channel modes (invite-only, topic restrictions etc.)
- Kicking users from a channel
- Invitations to private channels
- WHO command for listing channel users
- File transfer between users
- Capability negotiations are not supported
Clone the repository and compile the server:
git clone https://github.com/miladrahmat/ft_irc.git
cd ft_irc
makeStart the server with:
./ircserv <port> <password><port>: the TCP port the server will listen on (e.g. 6667)<password>: the password required for clients to authenticate (Cannot be less than 4 characters)
./ircserv 6667 helloTo install Irssi, follow the instructions here.
After installing Irssi, you can connect to the server locally:
irssi -c 127.0.0.1 -p <port> -w <password>127.0.0.1is the IP address of the host machine, this can wary.
Or in the same network:
irssi -c <host ip> -p <port> -w <password>