CSCI333_Assignment_I
CSCI333_Assignment_I
Prof. Zohaib Latif, Prof. Sain Saginbekov, Prof. Shinnazar Seytnazarov, Prof. Dimitrios Zorbas
Objective:
The goal of this assignment is to help you gain hands-on experience with socket programming
by creating a specific network application using Python or C. By completing this assignment,
you will:
real time.
- Prepend usernames to messages before broadcasting (e.g., "[Alice]: Hello").
2. Implement a secure mechanism for storing and verifying user credentials on the
server.
- Store credentials in a file or use a simple database (e.g., SQLite).
- Ensure that passwords are hashed before storage.
3. Add functionality to handle the following:
- Graceful disconnection of clients (e.g., when a client closes the application with a
keyboard interrupt).
- Server-side logging of messages exchanged between clients, including
timestamps and usernames.
- Error handling for socket operations (e.g., connection errors, invalid input).
4. Test the program with at least three clients connected to the server. (mandatory
even if you did not complete all tasks)
Provide screenshots showing:
- Clients authenticating successfully.
- Multiple clients connecting to the server.
- Messages being exchanged and broadcasted.
Submission Guidelines:
1. Submit a single ZIP file containing:
a) Source code for both the client and server programs with filenames
firstname_lastname_task1_client.py and firstname_lastname_task1_server.py.
The same for task 2.
b) Screenshots of your program in action (firstname_lastname_task1_client.jpg
etc.)
c) A README file explaining how to run the programs and details of the features
implemented.
2. Ensure your code is well-structured and includes meaningful comments.
Notes:
- You are encouraged to discuss concepts with peers but must complete the implementation
individually.
- Plagiarism will result in a zero score for the assignment.
- You can use either Python or C. No other languages are acceptable.
- Write on Piazza if you face technical issues or need clarification.