networking def stop_server(*ignore)handle_request("shutdown"wait_for_reply=falsesys exit(if the user chooses to quit the program we do clean termination by calling sys exit(every menu function is called with the previous licensebut we don' care about the argument in this particular case we cannot write def quit()because that would create function that expects no arguments and so when the function was called with the previous license typeerror exception would be raised saying that no arguments were expected but that one was given so instead we specify parameter of *ignore which can take any number of positional arguments the name ignore has no significance to python and is used purely to indicate to maintainers that the arguments are ignored if the user chooses to stop the server we use handle_request(to inform the serverand specify that we don' want reply once the data is senthandle_request(returns without waiting for replyand we do clean termination using sys exit(def handle_request(*itemswait_for_reply=true)sizestruct struct struct("! "data pickle dumps(items trywith socketmanager(tuple(address)as socksock sendall(sizestruct pack(len(data))sock sendall(dataif not wait_for_replyreturn size_data sock recv(sizestruct sizesize sizestruct unpack(size_data)[ result bytearray(while truedata sock recv( if not databreak result extend(dataif len(result>sizebreak return pickle loads(resultexcept socket error as errprint("{ }is the server running?format(err)sys exit( this function provides all the client program' network handling it begins by creating struct struct which holds one unsigned integer in network byte