计算机网络课程实验1——WINDOWS 环境下实现 WEB 服务器(python)

计算机网络课程实验1——WINDOWS 环境下实现 WEB 服务器(python),第1张

计算机网络课程实验1——WINDOWS 环境下实现 WEB 服务器(python) 代码部分如下:
# coding=utf-8

from http.server import baseHTTPRequestHandler, HTTPServer

PORT_NUMBER = 8080

# This class will handles any incoming request from
# the browser
class myHandler(baseHTTPRequestHandler):
    # Handler for the GET requests
    def do_GET(self):
        if self.path == "/":
            self.path = "./html/from.html"
        if self.path == "/index.html":
            self.path = "./html/to.html"

        try:
            # Check the file extension required and
            # set the right mime type

            sendReply = False
            if self.path.endswith(".html"):
                mimetype = 'text/html'      # mimetype用来指示文件类型的字符串
                sendReply = True
            if self.path.endswith(".jpg"):
                mimetype = 'image/jpg'
                sendReply = True
            if self.path.endswith(".gif"):
                mimetype = 'image/gif'
                sendReply = True
            if self.path.endswith(".js"):
                mimetype = 'application/javascript'
                sendReply = True
            if self.path.endswith(".css"):
                mimetype = 'text/css'
                sendReply = True
            if sendReply:
                # Open the static file requested and send it
                f = open(self.path)
                self.send_response(200)
                self.send_header('Content-type', mimetype)
                self.end_headers()
                self.wfile.write(f.read().encode('utf-8'))
                f.close()
            return

        except IOError:
            self.send_error(404, 'File Not Found: %s' % self.path)


try:
    # Create a web server and define the handler to manage the
    # incoming request
    server = HTTPServer(('127.0.0.1', PORT_NUMBER), myHandler)
    print('Started httpserver on port ', PORT_NUMBER)

    # Wait forever for incoming http requests
    server.serve_forever()

except KeyboardInterrupt:
    print('^C received, shutting down the web server')
    server.socket.close()
代码分析:

本次实验通过Python程序实现web服务器的功能,其中代码的前半段是对于程序文件目录中的HTML文件进行相对路径到绝对路径的调整和修正,确保程序可以正确的找到我们指定的和HTML文件以及图片等网页资源。
代码的后半段,则是整个程序实现web功能的主要部分,主要为以下几个函数,共同实现get请求的处理。

self.send_response(200)
self.send_header('Content-type', mimetype)
self.end_headers()
self.wfile.write(f.read().encode('utf-8'))

代码实现效果:运行Python程序后进入localhost8080出现一下界面:

点击next_page之后,出现另一个界面:

实验心得与体会

通过这次实验,我对html协议有了更深刻的了解。知道了怎么用Python搭建一个web服务器。并进行简单的网页跳转和8080页面编写。对于HTTP 协议下客户/服务器模式中信息交换的实现原理、流程(建立连接、发送请求、发送响应、关闭连接),相比于理论知识,在动手实践后能更好地掌握和理解。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5720636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存