Skip to content

Latest commit

 

History

History
60 lines (46 loc) · 2.76 KB

Readme.md

File metadata and controls

60 lines (46 loc) · 2.76 KB

image

IRC Server in C++98

Overview

This project is an implementation of an IRC (Internet Relay Chat) server using C++98. The server adheres to the IRC protocol and allows multiple clients to connect simultaneously, communicate, and perform basic IRC functions such as joining channels, sending private messages, and setting user modes. The project is designed to run on Unix-like systems and is specifically tailored for compatibility with macOS.

Features

  • Multiple Client Handling: The server can manage multiple clients at once without blocking or hanging.
  • Non-Blocking I/O: All input/output operations are non-blocking, ensuring efficient resource usage and smooth operation.
  • TCP/IP Communication: The server communicates with clients over TCP/IP (IPv4 or IPv6).
  • Basic IRC Functionality:
    • User authentication
    • Nickname and username management
    • Joining channels
    • Sending and receiving private messages
    • Broadcasting messages to all users in a channel
  • Channel Operations:
    • KICK: Eject a client from a channel
    • INVITE: Invite a client to a channel
    • TOPIC: Change or view the channel's topic
    • MODE: Modify channel modes including:
      • i: Invite-only mode
      • t: Restrict topic changes to operators
      • k: Set/remove channel key (password)
      • o: Manage operator privileges
      • l: Set/remove user limit in the channel
  • Operator and Regular Users: The server distinguishes between operators and regular users, allowing operators to perform administrative tasks within channels.

Additional Details

  • Platform Compatibility: The project includes specific accommodations for macOS, ensuring that file descriptors are handled in a non-blocking manner similar to other Unix systems.
  • Testing: The server has been rigorously tested to handle various scenarios, including partial data reception and low bandwidth situations.

Bonus Features (Optional)

For enhanced functionality, the following features could be added:

  • File Transfer: Enabling users to transfer files through the IRC server.
  • Bot Integration: Implementing a bot to automate tasks or provide additional services.

⛓️LINKS:

🥇Badge:

image

📚Skills:

  • Rigor
  • Unix
  • Network & system administration
  • Object-oriented programming

📱REACH ME

Made by RIDWANE EL FILALI 👋 See my linkedin

If you like this repo star it