Giter Club home page Giter Club logo

ft_irc's Introduction

FT_IRC Onboarding Document

Description

FT_IRC is an IRC (Internet Relay Chat) server implementation that allows users to connect to the server using an IRC client and communicate with each other using channels and direct messaging in real-time, by using sockets.


Read This First

Useful Resources


Project Overview

How to run it

  • make will generate the executable. The Makefile handles relink, header dependencies and places objects in a /build folder.
  • The usage is ./ircserver <port> <password>, but password authentication isn't implemented yet.
  • Once the server is running in a terminal, open another terminal and enter nc <ipaddr> <port>, followed by whatever you want to send requests to the server, command parsing isn't implemented yet. irssi will not be able to send requests to your ircserver until parsing is implemented, but you can still connect by using /connect <ipaddr> <port> inside the client. ipaddr will always be localhost, but port can be any free port.
  • To exit the server, you can hit Ctrl + C and the program will cleanly exit, however later on the only ways to exit the server will be sending a SIGTERM from another terminal or typing /exit.

For a detailed visualization of the FT_IRC server project, you can refer to the Miro board.

image

IrcServer

The IrcServer class represents the core of the FT_IRC server. It handles client connections, message processing, and user management. The server listens for incoming connections, establishes data sockets with clients, and responds to IRC commands. The server uses the poll(or equivalent) system call for efficient event handling and non-blocking I/O so we can serve multiple clients at once.

Channel

The Channel class represents an IRC channel, where users can join and exchange messages. The class manages the users in the channel, broadcasts messages to all users, and handles channel-specific commands.

User

The User class represents an IRC user connected to the server. It stores user-specific information, such as nickname and connection status. Users can join channels, send and receive messages, and interact with other users on the server.

Branching & Implementation Strategy

For this project I recommend settings weekly goal-oriented sprints and working on feature-branches. Once a feature is implemented and fully tested and functional, it can be merged onto the main branch.

ft_irc's People

Contributors

camillebarbit avatar djbrl avatar seubmarine avatar

Watchers

 avatar  avatar

Forkers

seubmarine

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.