relay

Relay

> A multi-client terminal-based chat application built from the ground up using TCP sockets and concurrency.

Objective

Build a client-server chat system where multiple users can connect through their terminals and communicate in real time.

The project should primarily demonstrate:

This project is not intended to compete with production chat applications.

Technology Choice

Component Technology
Language C
Network TCP/IP
API POSIX sockets
Concurrency POSIX threads
Synchronization Mutexes and condition variables
Operating System Linux
Build Make
Debugging GDB
Testing Manual + basic automated tests
Version Control Git

MVP Features

The first complete version will support:

1. Connection

Client -> TCP -> Server

2. Usernames

Username: akash

3. Broadcast

> Hello, Everyone!

Other connected user recieve:

[akash]: Hello, Everyone!

4. Private messaging

> /msg rahul Hey, how are you?

5. User list

> /users

Example output:

Connected users:
- akash
- rahul
- priya

6. Commands

/help
/users
/msg <username> <message>
/quit