finallylet' discuss some context we've seen three getfile scripts at this point in the book the one in this is different from the other two we wrote in earlier but it accomplishes similar goalthis getfile is server-side cgi script that displays files over the http protocol (on port in we built clientand server-side getfile to transfer with raw sockets (on port in we implemented client-side getfile to ship over ftp (on port reallythe getfile cgi script in this simply displays files onlybut it can be considered download tool when augmented with cut-and-paste operations in web browser moreoverthe cgiand http-based putfile script here is also different from the ftp-based putfile in but it can be considered an alternative to both socket and ftp uploads the point to notice is that there are variety of ways to ship files around the internet-socketsftpand http (web pagescan move files between computers technically speakingwe can transfer files with other techniques and protocolstoo--post office protocol (popemailnetwork news transfer protocol (nntpnewstelnetand so on each technique has unique properties but does similar work in the endmoving bits over the net all ultimately run over sockets on particular portbut protocols like ftp and http add additional structure to the socket layerand application models like cgi add both structure and programmability in the next we're going to use what we've learned here to build more substantial application that runs entirely on the web--pymailcgia web-based email toolwhich allows us to send and view emails in browserprocess email attachmentsand more at the end of the daythoughit' mostly just bytes over socketswith user interface transferring files to clients and servers