CChatApp is a lightweight chat application built from scratch in C. It supports real-time communication between multiple computers using a client-server architecture. The project begins as a Command-Line Interface (CLI) application and is designed to evolve into a GUI-based chat platform.
- Phase 1: Basic client-server messaging over TCP/IP.
- Phase 2: Multi-client support with user identification.
- Phase 3: Optional GUI integration using GTK or Qt.
- Phase 4: Additional features like message encryption and file transfer.
- GCC or Clang compiler
- Basic understanding of C programming
- Knowledge of socket programming (helpful, but not mandatory)
- Clone the repository:
git clone https://github.com/your-username/CChatApp.git cd CChatApp
- Compile the application:
gcc socket_client/main.c utils/utils.c -o client -lpthread gcc socket_server/main.c utils/utils.c -o server -lpthread
- Run the server:
./server
- Run the client (on the same or another machine):
./client
- Basic client-server communication
- Support for sending and receiving messages
- Error handling and user validation
- Threaded server to handle multiple clients
- Broadcast messages to all connected clients
- User disconnection handling
- Design a simple GUI using GTK or Qt
- Add message input/output areas
- Integrate GUI with networking logic
- Message encryption using OpenSSL
- File transfer support
- Chat themes and user preferences
CChatApp/
├── LICENSE
├── README.md
├── client
├── server
├── socket_client
│ ├── a.out
│ ├── client.h
│ └── main.c
├── socket_server
│ ├── main.c
│ └── server.h
└── utils
├── utils.c
└── utils.h
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add feature-name"
- Push to the branch:
git push origin feature-name
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
- Beej's Guide to Network Programming for socket programming resources.
- The C programming community for their valuable tools and libraries.