> A multi-client terminal-based chat application built from the ground up using TCP sockets and concurrency.
Build a client-server chat system where multiple users can connect through their terminals and communicate in real time.
The project should primarily demonstrate:
- TCP/IP networking
- Linux socket programming
- Concurrent client handling
- Thread synchronization
- Client-server architecture
- Basic protocol design
- Systems level C programming
This project is not intended to compete with production chat applications.
| 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 |
The first complete version will support:
Client -> TCP -> Server
- Server listens on a configurable port.
- Multiple clients can connect.
- Each client recieves a dedicated server thread.
Username: akash
- Each client must provide a unique username upon connection.
> Hello, Everyone!
Other connected user recieve:
[akash]: Hello, Everyone!
> /msg rahul Hey, how are you?
> /users
Example output:
Connected users:
- akash
- rahul
- priya
/help
/users
/msg <username> <message>
/quit