← Back to selected work

ft_irc

An IRC server written in C++98 with non-blocking socket I/O.

Role
Network Architecture Lead
Access
1337 / 42 validated project
[01]

Context

An IRC server written in C++98 with non-blocking socket I/O. It manages multiple clients, channels, messaging commands, channel operators, permissions, and fragmented network input.

[02]

My responsibility

Built and validated through the 1337 / 42 project curriculum, with direct responsibility for implementation, debugging, testing, and evaluation requirements.

[03]

System scheme

Engineering scheme

Non-blocking IRC event loop

Input → Processing → Output

One poll-driven server coordinates socket readiness, per-client buffers, command dispatch, channel state, and outbound replies.

  1. 01

    Listening socket

    Accept connections without blocking the server loop.

  2. 02

    poll event loop

    Track readable and writable descriptors across clients.

  3. 03

    Input buffers

    Accumulate fragmented bytes into complete IRC messages.

  4. 04

    Command parser

    Validate registration, channel, message, and operator commands.

  5. 05

    State model

    Maintain clients, channels, membership, modes, and permissions.

  6. 06

    Protocol replies

    Send numeric replies, broadcasts, errors, and disconnect cleanup.

Non-blocking I/O
Protocol compliance
Buffering
Permission checks
[04]

Implementation breakdown

  1. 01

    System design

    An event loop uses `poll()` to multiplex client sockets and routes parsed IRC commands through client, channel, and server state objects.

[05]

Technical scope

C++9801
Network Programming02
Sockets03
Asynchronous I/O04
[07]

Implementation details

  • Complete implementation of standard IRC protocols (JOIN, PART, PRIVMSG, KICK).
  • Channel operator privileges and permission checks.
  • Compatibility testing with standard IRC clients such as Irssi.
[08]

Engineering constraints

  • Buffering partial and fragmented socket reads until complete IRC messages are available.
  • Maintaining client-channel membership and operator permissions consistently.
[10]

Project gallery

ft_irc project view 1

Need a system like this?

Tell me about the workflow, integration, or backend problem.

Discuss a project