Python基础–简单的web服务器
实现步骤
1.获取用户请求路径
2.根据路径,返回指定内容
3.组装报文,返回给客户端
4.如果没有指定路径页面,返回404给到客户
import socket
def client_exec(client):
"""
# 处理客户请求
:param client:客户端
:return: none
"""
data = client.recv(1024)
if data:
# 解码为utf-8
decode_data = data.decode("utf-8")
# 切割数据,最大切割次数是2
split_data = decode_data.split(" ", maxsplit=2)
if len(split_data) > 2:
file_path = split_data[1]
if file_path == "/":
file_path = "/index.html"
else:
client.close()
return
else:
client.close()
return
# 判断path地址,并根据匹配访问指定页面
if file_path == "/index.html":
# 组装http状态码为 200的响应头
rep_line = "http/1.1 200 ok \r\n"
# 因为这个地方是汉字,所以需要单独指定下文本格式类型,下同
rep_head = 'content-type:text/html;charset=utf-8\r\n'
rep_emp = "\r\n"
rep_body = "你好"
rep_cont = rep_line + rep_head + rep_emp + rep_body
# 将发送出去的文本内容编码为`utf-8`在经过套接字发送给客户端
client.send(rep_cont.encode("utf-8"))
else:
# 组装http状态码为 404的响应头
rep_line = "http/1.1 404 not found\r\n"
rep_head = 'content-type:text/html;charset=utf-8\r\n'
rep_emp = "\r\n"
rep_body = "页面有问题"
rep_cont = rep_line + rep_head + rep_emp + rep_body
client.send(rep_cont.encode("utf-8"))
client.close()
def main():
"""
主函数
"""
# 初始化套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置端口复用
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 绑定端口
server_socket.bind(('', 8081))
# 监听端口
server_socket.listen(128)
while True:
client, address = server_socket.accept()
# 处理客户端信息
client_exec(client)
# 关闭端口
server_socket.close()
if __name__ == '__main__':
main()
如何访问,可以在pycharm中运行此程序,代码格式必须调好,python对应代码的缩进要求比较严格
当运行完这个代码之后,可以在本地的浏览器上直接输入127.0.0.1:8081
进行访问即可,
Tips:表点符号全英文
分别测试/
和非/
- 上述代码,比较重要的点有2个地方,
- 1.怎么获取到客户的访问路径,这里采用最简单的方式,
切片
,取到路径 - 2.根据上面取到的路径,进行判断.返回指定路径的界面.如果无界面,则返回
404
- 1.怎么获取到客户的访问路径,这里采用最简单的方式,
目前这个是是最简单版的server的建设,后面,还会设置成多任务版的,当然还有最重要的动静分离.因为最近一直有点忙,所以更新上有点慢,请谅解