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的建设,后面,还会设置成多任务版的,当然还有最重要的动静分离.因为最近一直有点忙,所以更新上有点慢,请谅解==