Question
make sure to solve the question correctly using python and follow the mentioned instructions and requirements in the assignment , also the requests should be
make sure to solve the question correctly using python and follow the mentioned instructions and requirements in the assignment , also the requests should be in the client side and I want you to provide me with the complete code with explanations in detail .(The client, server .py scripts, and the JSON file should be provided by you)
Note : don't leave any part or ask me to add anything to the code please I want the code ready to be excuted directly
here is the assignment do your best to let me give you a like:
Note : don't forget the additional concept part which is to choose one of the following : GUI, TSL/SSL or object-oriented programming and implement it in the code . and if you can write the report I would be grateful please don't disappoint me because other experts did.
I want you to write the full code dont ask me to fill anything and include one of the additional concepts.
Assignment In this project, the learners should create a client-server system that exchanges information about flights at a certain airport. The emphasis in this project is on client/server architecture, network communication, multithreading, API, and applying good coding practices. The system should consist of two Python scripts (the server and the client). The server should retrieve data of a selected airport from aviationstack.com via the proper API, extract the required information from the retrieved data, manage connections with multiple simultaneous clients, and respond to client requests. The Server Script The server should start by asking about the target airport (ICAO code) and retrieve the information about flights at the specified airport over an API. Then the server should be evaluation purposes) 4. Wait for clients' requests to connect (should accept at least three connections simultaneously). a. Accept the connection. b. Store the client's name and display it on the terminal. 5. Wait for clients' requests, search the retrieved data for matching, and send a reply with the matching information. a. All arrived flights (return flight IATA code, departure airport name, arrival time, arrival terminal number, and arrival gate). b. All delayed flights (return flight IATA code, departure airport, original departure time, the estimated time of arrival), arrival terminal, delay, and arrival gate. c. All flights from a specific airport using the airport ICAO code (return flight IATA code, departure airport, original departure time, estimated arrival time, departure gate, arrival gate, and status). d. Details of a particular flight (return flight IATA code; departure airport, gate, and terminal; arrival airport, gate, and terminal; status; scheduled departure time; and scheduled arrival time). The server should display the following details clearly on the server screen: 1. The acceptance of a new connection with the client's name. 2. The requester name, type of request, and request parameters. 3. The disconnection of a client with its name. The Client Script The client script should connect to the server and stay on until the user selects the Quit option. The client should present multiple options for the user; different request types and quit options. The client should send different types of requests, and receive and display the responses. The client should be user-friendly and display the options and results neatly. The client should stay connected and ready to send new requests until the user chooses to quit. 1. Establish a connection with the server and send the client's username to identify itself. 2. Sends one of the following four request types: a. Arrived flights: the client should display the flight code (IATA), departure airport, arrival time, arrival terminal, and arrival gate. b. Delayed flights: the client should display the flight code (IATA), departure airport, departure time, estimated arrival time, delay, terminal, and gate. c. All flights coming from a specific city: (the client should display flight code (IATA), departure airport, departure time, estimated arrival time, departure gate, arrival gate, and status. d. Details of a particular flight: the client should display flight code (IATA), departure (airport, gate, and terminal), arrival (airport, gate, and terminal), status, scheduled departure time, and scheduled arrival time. 3. Close the connection and leave when the user selects the Quit option. Note: the retrieved information should be displayed clearly and neatly. What you will learn In this project, the learners will build a simple, centralized, client/server, multi-threaded, connection-oriented Python application (system) with the use of available online API. By doing so, the learners will learn a basic framework to create such a system, using techniques that work well in many situations. You will examine some of the limitations of this framework and explore ways of getting around them. Why create from scratch There are many systems available that can take care of many of the networking details for you. In many cases, the best real-world solution is to use an existing framework because it often provides useful features such as fault tolerance, load-balancing, and session handling. It is, nevertheless, crucial to understand how these things work at the lowest level. No existing solution is perfect for all problems, and existing solutions often have minor flaws that your code must work around. Merely choosing the right pre-packaged solution takes a discriminating eye that has been educated as to the tradeoffs inherent in various techniques. Recommended Design Guidelines 1. Networking Begin by implementing a simple Python server that can accept incoming TCP connections, and echo data sent on the connections back to the sender. You can test your server by using the "telnet" program. Furthermore, you can use Wireshark to follow the exchange packets between the client and the server. Then implement the client and test the connection with the server. 2. Retrieving the data from the online source Implement the API to retrieve the data from the online source. Then implement the extraction of wanted information. 3. Threads Extend the networking code you wrote in part 1 to accept multiple connections by creating a thread to deal with each incoming connection. Make sure that you put the functions in their appropriate location (main thread, loop, thread body) Evaluation The assignment will primarily be graded on: 1. The overall design of the system (no unneeded repetition of code). 2. How closely does your code implement the described protocol (system)? 3. How much of the described functionality you provide, and how correct your implementation is? 4. Coding style (such as neat code, and proper variable names). 5. Usage of GitHub (for the entire process of project script development) and the use of Teams private channel for meetings and sharing documents and resources. Design and style are essential components of this project. A significant lack of documentation (comments) or elegance within your code will affect your mark. Furthermore, a lack of participation in GitHub will affect your mark. Your grade will be based on the following 1. Correctness and completeness (30%) : To get some credit, you must, at the minimum, be able to join the system and list matching flight records (15%). The next 10% for proper responses and the display of them. Another 5% for handling all other control messages. Failing to properly handle a server/client failure costs 5%. Your implementation must match the user interface specified above exactly. If your code does not compile, you will not receive any marks for correctness and completeness. 2. Design (20\%): Elegance, the robustness of design, and handling of error conditions and special cases will be considered. reasonable variable names and comment portions of your code that reflect design choices and non-intuitive ideas, properly indent your code, and use empty lines to make your code more readable. 4. Report (10%) : Your written documentation must include everything you think is worth mentioning about your implementation. - Describe your design and what has and hasn't been done. Marks will be given for the clarity of this documentation-organize it neatly, and use spellcheck for proper English. - Discuss the purpose of the main elements (Listener class, Thread class, While-Read/Write loop (server-side), Removing dead connections, etc.) of your framework. - Discuss some of the limitations of your framework and explore ways of getting around them, if possible - Now that you have some experience in Python, what do you think of it? Is it a worthwhile language for developing distributed systems? Discuss two pros and two cons, and at least one extension you would like to see made to the language. Your report should also include comments on the main design decisions (evaluation of the design) you have made: - Messages formats - How does your code deal with concurrent connection requests? - How does the chat server deal with client failures? - How do clients deal with chat server failures? - Any other decision you feel influenced your design. - etc. 5. Demonstration (20\%): a 10-minute overview of your work. When talking, follow your notes, and stick to your structure. Take your time, for example, to illustrate concepts or else that you introduce; your talk should not be too dense or abstract, which makes it hard to follow. Finally, you should be able to answer questions related to your design and code. 6. Additional concepts (10%) : Add a concept that we did not take in the class. Select one of the following topics, leam it, implement it in your code, and explain its basics in your report: 1. TSL/SSL (security): should secure all your packet transactions. Use Wireshark to examine the exchanged packets. You must show that it is working during the demonstration and include pieces of evidence in your report (screenshots of the packet data). 2. Object-Oriented Programming: use object-oriented programming in your coding. Describe, in your report, the basics of OO in Python, and your classes. 3. GUI: use a graphical user interface for the client. It should be easy to use and clear to read. The user should send all requests using the GUI. 7. Penalties: there will be penalties for: 1. Poor engagement in the project 2. Uneasy to read codes (spacing, ordering, and naming) 3. Redundancy in codes. 4. Unclear displayed outputsStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started