PacketTalk is a learning project that explores network programming with Qt Widgets and UDP datagram sockets. Instead of building a complete chat application all at once, the project is developed incrementally, with each feature introduced through small, focused commits.
The goal is to learn how networking, GUI programming, and application architecture come together in a desktop application.
- Understand UDP datagram communication
- Practice event-driven programming with signals and slots
- Build a desktop GUI using Qt Widgets
- Maintain a clean and meaningful Git history throughout development
The project starts with the simplest possible implementation and gradually becomes more capable.
- Main window layout
- Enter peer IP address
- Enter peer port
- Connect button
- Send text messages over UDP
- Display received messages
- Input validation
- Better message layout
- Connection status indicators
- Improved error handling
- Usernames
- Contact discovery
- Chat history
- Better user experience
- Multiple conversations
- File transfer
- Message timestamps
- Rich text support
- Optional TCP implementation
- End-to-end encryption (for learning purposes)
The application currently consists of:
- A field for entering the peer IP address and port
- A Connect button
- A scrollable message area
- A message input field
- A Send button
Networking logic will be added incrementally.
- C++
- Qt Widgets
- Qt Network
- CMake
- Git
This repository is primarily a study project. The emphasis is on understanding the underlying concepts rather than producing a feature-complete chat application. Each commit represents a small step in the development process, making it easy to follow the project's evolution.