https://github.com/yvann-ba/internet_relay_chat
IRC server with non-blocking I/O and full protocol support using poll() for efficient multi-client handling
https://github.com/yvann-ba/internet_relay_chat
network server-client-communication
Last synced: 4 months ago
JSON representation
IRC server with non-blocking I/O and full protocol support using poll() for efficient multi-client handling
- Host: GitHub
- URL: https://github.com/yvann-ba/internet_relay_chat
- Owner: yvann-ba
- License: apache-2.0
- Created: 2025-02-09T07:46:50.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-12T19:29:53.000Z (about 1 year ago)
- Last Synced: 2025-04-15T04:44:35.094Z (about 1 year ago)
- Topics: network, server-client-communication
- Language: C++
- Homepage:
- Size: 90.8 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌐 Internet Relay Chat
### **A lightweight IRC (Internet Relay Chat) server implementation in C++98, featuring fundamental IRC functionalities and client communication over a network**
---
## Features
- **Non-blocking I/O**: Handle multiple clients simultaneously using poll()
- **TCP/IP**: Network communication (IPv4/IPv6)
- **Authentication**: Secure password-protected connections
- **Real-time**: Instant message delivery and channel updates
---
## Video Demo
[Coming Soon]
---
## Quick Setup
1. **Build the Server**
```bash
make
```
2. **Launch the Server**
```bash
./ircserv
```
3. **Connect with Any IRC Client**
```bash
nc localhost
```
---
## Technical Details
Available Commands
### User Commands
- **NICK**: Set/change nickname
- **USER**: Set username and real name
- **JOIN**: Enter a channel
- **PRIVMSG**: Send private messages to users/channels
- **QUIT**: Disconnect from server
### Operator Commands
- **KICK**: Remove user from channel
- **INVITE**: Invite user to channel
- **TOPIC**: Set/view channel topic
- **MODE**: Modify channel settings
- `i`: Toggle invite-only
- `t`: Restrict topic changes to operators
- `k`: Set/remove channel password
- `o`: Grant/revoke operator status
- `l`: Set/remove user limit
Technical Specifications
- **Language**: C++98
- **Network**: TCP/IP (IPv4/IPv6) implementation
- **Architecture**: Single-process, non-blocking I/O
- **System Calls**: poll(), socket, fcntl
- **Client Support**: Compatible with standard IRC clients
- **Error Handling**: Comprehensive error management
- **Memory**: No memory leaks
---
#### 🖥️ Works on Linux, Mac and WSL(for Windows)