Skip to content
Abrar edited this page Jan 15, 2023 · 5 revisions

Introduction.

Purpose and goals of the IRC server

The purpose of this IRC server is to create a program that allows multiple clients to communicate with each other in real-time over the internet. Through the use of this server, clients will be able to join channels, send and receive messages, and participate in conversations with other clients.

The goals of this IRC server include:

  • Supporting multiple clients simultaneously without hanging or crashing
  • Implementing authentication through the registration phase for the clients (send password, nickname, and username)
  • Enabling clients to join channels and send and receive messages with other clients in the same channel
  • Providing operator commands for designated users
  • Ensuring that communication between the server and clients is done via TCP/IP
  • Achieving functionality similar to using an official IRC server when used with the chosen reference client.

Technical requirements

This IRC server project has several technical requirements that must be followed in order to meet the project's goals and ensure successful functionality. These requirements are as follows:

  • Programming language: The IRC server must be written in C++ 98.
  • External libraries: No external libraries or the Boost libraries are allowed.
  • Networking: Communication between the server and clients must be done via TCP/IP (v4 or v6).
  • Reference client: A specific IRC client will be used as a reference for testing the functionality of the server.
  • Functionality: The server must support authentication, setting a nickname and username, joining channels, and sending and receiving messages. It must also support operator commands and differentiate between regular users and operators.
  • Code cleanliness: The code for the IRC server must be well-organized and easy to read.

It is important to adhere to these technical requirements in order to meet the project's goals and ensure that the IRC server functions properly.

Reference client

For this IRC server project, the irssi IRC client has been used as a reference for testing the functionality of the server. Irssi is a free, open-source IRC client that is available for a variety of operating systems, including Linux, BSD, and MacOS. It has a user-friendly interface and supports a wide range of features, making it a suitable choice as a reference client for this project.

When testing the server, it should be possible to use irssi to connect to the server without encountering any errors. The functionality of the server should be similar to using an official IRC server when used with irssi, including the ability to authenticate, set a nickname and username, join channels, and send and receive messages.

Please ensure that the IRC server is compatible with irssi and that all necessary features are implemented before testing and submitting the project.