0%

Python基础--web服务端简单搭建

python

Python基础–web服务端简单搭建

实现步骤
1.获取用户请求路径
2.根据路径,返回指定内容
3.组装报文,返回给客户端
4.如果没有指定路径页面,返回404给到客户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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

==目前这个是是最简单版的server的建设,后面,还会设置成多任务版的,当然还有最重要的动静分离.因为最近一直有点忙,所以更新上有点慢,请谅解==