思路的步骤大致为:
1.创建套接字。
2.设置套接字选项,复用端口。
3.绑定IP/端口
4.开启监听模式/被动模式
5.循环接收浏览器的请求。
6.accept,为客户端创建对象
7.用函数处理浏览器的请求
8.接收数据,如果有数据,就解码,得到utf-8形式的二进制数据
9.正则判断输入的是否是一个正确的网址
10.提取出这个网址路径
11.os.path.exists来判断这个路径在服务器上是否存在
12.存在的话则循环以二进制读取网页的内容,并保存发送响应给浏览器
代码如下:
import re
import socket
import gevent
from gevent import monkey
import os
from urllib.parse import unquote
monkey.patch_all()
def client_handle(client):
request_data = client.recv(1024)
if request_data:
# 说明有数据
request_data_decode = request_data.decode("utf-8")
print(unquote(request_data_decode, 'utf-8'))
# 正则从请求信息中提取出网址
ret = re.match("[^/]+(/[^ ]*) HTTP/1.1", request_data_decode)
if