ircserv is an IRC server developed in C++98. It supports non-blocking I/O with the use of poll() (or equivalent) for efficient event handling. The server allows multiple client connections and implements essential IRC functionalities like authentication, nickname management, channel operations, private messaging, and operator commands.
- Non-blocking I/O: The server uses
poll()(or equivalent) to avoid blocking operations and handle multiple connections simultaneously. - IRC Protocol Support: Implements core IRC commands such as joining channels, setting nicknames, sending private messages, and more.
- Channel Management: Operators can control channels with commands like
KICK,INVITE,TOPIC, andMODE. - TCP/IP Communication: Full support for TCP/IP (IPv4 and IPv6) communication between clients and server.
git clone https://github.com/facetint/ft_irc.gitNavigate to the project directory and compile:
cd ircservmakeRun the server with the required arguments:
./ircserv <port> <password>: The port on which the server will listen for incoming connections. : The password required for client authentication.
Example:
./ircserv 6667 mypasswordYou can test the server's behavior with nc:
nc -C 127.0.0.1 6667| Command | Description |
|---|---|
| NICK | Set a client's nickname. 🏷️ |
| USER | Set a client's username. 🧑💻 |
| JOIN | Join a channel. 📲 |
| PRIVMSG | Send private messages to users or channels. ✉️ |
| Command | Description |
|---|---|
| TOPIC | Set or view the channel topic. 📝 |
| MODE | Modify the channel’s mode (e.g., i, t, k, o, l). 🔧 |
| KICK | Eject a client from the channel. 🚪 |
| INVITE | Invite a client to join a channel. 🎉 |
