Messenger
This project consists of developing a graphical client-server application that allows two clients to communicate securely, with unique IDs, message logging, support for emojis and image transmission, and end-to-end encryption.
Phase 1: Client-Server Architecture Setup
Set up the basic client-server structure to allow multiple clients to connect and communicate through a central server.
- Implement a server that can accept multiple client connections simultaneously
- Assign a unique ID to each connected client
- Ensure proper connection and disconnection handling
Functional Output: Server running and multiple clients can connect, each receiving a unique ID
Phase 2: Text Message Transmission
Enable clients to send and receive text messages to/from a specific client ID.
- Send messages via the server as a relay
- Display incoming messages in the client GUI in real-time
- Ensure messages are delivered to the correct recipient ID
Functional Output: Clients can send and receive text messages in real-time
Phase 3: Message Logging and History
Store all sent and received messages in a file for each client to allow tracking message history.
- Save messages in a structured format including sender ID, receiver ID, timestamp, and message content
- Load message history when a client reconnects
- Allow viewing the conversation history for a specific client ID
Functional Output: Persistent log files per client with complete message history
Phase 4: Graphical User Interface
Develop a GUI for clients to interact with messages and manage conversations.
- Display conversation threads with proper formatting for sender and receiver
- Include input fields for composing messages and selecting recipient IDs
- Provide an interface to view message history per client
Functional Output: A functional client GUI where users can send, receive, and view messages easily
Phase 5: Encryption and Security
Implement end-to-end encryption for all messages to ensure secure communication.
- Encrypt messages before sending and decrypt upon receiving
- Manage encryption keys securely on client-side
- Ensure that only the intended recipient can read the messages
Functional Output: Secure encrypted messaging between clients with proper decryption on delivery
Phase 6: Multimedia Support
Extend the application to support emojis and image transmission.
- Enable sending and displaying emojis in messages
- Implement image sending and receiving, saving images alongside messages
- Ensure multimedia messages are properly encrypted and logged
Functional Output: Clients can send and receive emojis and images securely, with all content logged in message history files