# -*- coding: utf-8 -*-
import re
import socket
import threading
import gevent
from gevent import monkey
monkey.patch_all() # 使用gevent多协程时,使用此代码,下面的内容不需要更改,正常写
def server(new_socket):
recv = new_socket.recv(1024)
request = recv.decode("utf-8")
print(request)
# GET / HTTP/1.1 "/"代表需求,主要用来获取客户端的请求
# response += '<h1>1235aaa</h1>'
try:
# 正常的操作
ret = request.splitlines()
print(ret)
ret = re.match(r"GET (/.*\s)",ret[0])
print(ret)
file_name = ""
if ret:
file_name = ret.group(1)
print(file_name)
if file_name == "/ ":
file_name = "/index.html"
f = open('.'+ file_name,'rb')
except:
# 发生以上多个异常中的一个,执行这块代码
response = "HTTP/1.1 404 NOT FOUND \r\n"
response += '\r\n'
response += "-----error----"
new_socket.send(response.encode("utf-8"))
else:
# 如果没有异常执行这块代码
html_content = f.read()
f.close()
response = "HTTP/1.1 200 OK \r\n"
response += "\r\n"
new_socket.send(response.encode("utf-8"))
new_socket.send(html_content)
new_socket.close()
def main():
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1) # 牢记,此句关键,让端口腾出来,随时访问
tcp_server_socket.bind(('',7093))
tcp_server_socket.listen(128)
while True:
new_socket,add = tcp_server_socket.accept()
# 1.tgreading 多线程
# t1 = threading.Thread(target = server, args = (new_socket,))
# t1.start()
# 2.gevent 多协程
gevent.spawn(server, new_socket)
if __name__ == '__main__':
main()
07-2threading,gevent实现http服务器,返回浏览器html内容
最新推荐文章于 2021-12-23 09:48:05 发布