Skip to content

Toowan0x1/ft_irc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IRC

(International standard RFC 2812)

Internet Relay Chat (IRC) is a text-based chat system for instant messaging. IRC is designed for group communication in discussion forums, called channels but also allows one-on-one communication via private messages as well as chat and data transfer, including file sharing.

Internet Relay Chat is implemented as an application layer protocol to facilitate communication in the form of text. The chat process works on a client–server networking model. Users connect, using a client—which may be a web app, a standalone desktop program, or embedded into part of a larger program—to an IRC server, which may be part of a larger IRC network. Examples of programs used to connect include Mibbit, IRCCloud, KiwiIRC, and mIRC.

Mandatory Part

Description An IRC server in C++ 98
Program name ircserv
Arguments port: The listening port, password: The connection password
External functs Everything in C++ 98. socket, close, setsockopt, getsockname, getprotobyname, gethostbyname, getaddrinfo, freeaddrinfo, bind, connect, listen, accept, htons, htonl, ntohs, ntohl, inet_addr, inet_ntoa, send, recv, signal, lseek, fstat, fcntl, poll (or equivalent)
Libft authorized n/a

User Modes to be implemented:

  • i: Set/remove Invite-only channel.
  • O: Give/take channel Operator Privilege.
  • t: Set/remove the restrictions of the TOPIC command to channel operators.
  • k: Set/remove the Channel Key (password).
  • l: Set/remove the User Limit to channel.

Bonus Part

Some extra features to be added into IRC server so it looks even more like and actual IRC server:

  • Handle file transfer.
  • A bot

Usage

  • Build the IRC server:
    make
  • Run the IRC server:
    ./ircserv <SERVER_PORT> <SERVER_PASSWORD>
  • Connect from client. e.g. hexchat:
    /server <SERVER_IP> <SERVER_PORT> <SERVER_PASSWORD>

Popular IRC CLients

IRC (Internet Relay Chat) clients are applications that facilitate communication on the IRC network, allowing users to connect, chat, and participate in discussions with other users around the world. Whether you prefer a command-line interface or a graphical user interface, there are various IRC clients to suit your preferences.

Choosing an IRC Client

  • Selecting an IRC client depends on your preferences and requirements. Whether you favor a command-line environment, a user-friendly GUI, or specific features, there's an IRC client suitable for you. Explore the options and find the client that aligns with your communication style and workflow.

Important Note

  • Our IRC program has been tested and is fully compatible with the HexChat IRC client. HexChat is used as our reference client during development and testing to ensure seamless compatibility and optimal performance.

Lessons

  • Socket programming & multiplixing
  • poll error monitor and handling
  • event-driven programming

Supported Commands

  • USER
  • NICK
  • PASS
  • JOIN
  • JOIN (with a key)
  • WHO
  • WHOIS
  • LIST
  • MODE
  • KICK
  • TOPIC
  • MSG
  • LEAVE
  • SEND
  • INVITE

About

An IRC server in C++ 98 (rfc 2812).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •