Web服务器 python版

计算机网络写socket,老师发了个Java的教程,感觉过程是明了,但是代码感觉有点冗杂了,加上学了点python的爬虫,感觉用python还真是挺简洁的,便用python搭个web服务器,整体的思路都是一样的,就是在读入文件的时候恶心了一点,python的编码问题还是有点无语,最终估摸着用二进制读的文件,好歹弄完了,话不多说,奉上代码,还希望多多指教。

import http.server as hs
import sys, os

class RequestHandler(hs.BaseHTTPRequestHandler):
    Error_Page = """<HTML>
        <HEAD><TITLE>Not Found</TITLE><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></HEAD>
        <BODY><h1>Not Found</h1></BODY></HTML>
        """

    def send_content(self, page, status=200, Type="text/html"):
        self.send_response(status)
        self.send_header("Content-type", Type)
        self.send_header("Content-Length", str(len(page)))
        self.end_headers()
        self.wfile.write(bytes(page))

    def do_GET(self):
        try:
            fileName = os.getcwd() + self.path
            print(fileName)
            ftype=content_type(fileName)
            with open(fileName,'rb') as file:
                content = file.read()
                file.close()
            self.send_content(content, 200,ftype)
        except Exception:
            content = self.Error_Page.encode(encoding="utf-8")
            self.send_content(content, 404)

def content_type(fileName):
    if fileName.endswith('.html') | fileName.endswith('.htm'):
        return "text/html"
    if fileName.endswith('.jpg'):
        return "image/jpg"
    if fileName.endswith('.txt'):
        return "text/plain"
    return "application/octet-stream"

if __name__ == '__main__':
    httpAddress = ('127.0.0.1', 6789)
    httpd = hs.HTTPServer(httpAddress, RequestHandler)
    httpd.serve_forever()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值