Web框架与HTTP协议

实现多并发的web服务端

import spcket
from threading import Thread server
=socket.socket() #实例化socket对象 server.bind(('127.0.0.1',10086)) #绑定地址及应用端口号 server.listen() #建立连接 def feedback(conn): client_msg=conn.recv(1024) #接收连接请求
   print(client_msg) #打印请求内容 path
=client_msg.split('\r\n')[0].split(' ')[1]
   #获取请求的文件
if path=='/':
     conn.send(b'HTTP/1.1 200 ok \r\n\r\n')
     #响应 协议版本:HTTP/1.1 状态码:200 状态码的描述 回车符换行符 with open(
'dome.html','rb')as f_html: data=f_html.read() conn.send(data)
     #发送请求文件 conn.close()
if path=='/dome.css':
     conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open(
'dome.css','rb')as f_css: data=f_css.read() conn,send(data) conn.close() if path =='/dome.js':
     conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open(
'dome.js','rb')as f_js: data=f_js.read() conn.send(data) conn.close() if path=='/background.jpg':
     conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open(
'background.jpg','rb')as f_bg: data=f_bg.read() conn.send(data) conn.close() if path=='/favicon.ico':
     conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open(
'favicon.ico','rb')as f_ico: data=f_ico.read() conn.send() conn.close() while True: conn,addr=server.accept()
   #获取连接 t
=Thread(target=fun,args=(conn,))
   #设置线程 t.start()
   #开启线程

HTTP请求格式

请求方法 空格 URL(即请求文件路径) 空格 协议版本 回车符 换行符    ps:(请求行)

头部字段名 冒号 值 回车符 换行符   ps:(请求头部 可能会有多行)

回车符 换行符

请求数据

HTTP响应格式

协议版本 空格 状态码 空格 状态码描述 回车符 换行符 ps:(状态行)

头部字段名 冒号 值 回车符 换行符  ps:(响应头部 可能会多行)

回车符 换行符

响应正文

猜你喜欢

转载自www.cnblogs.com/lttlpp61007188/p/10871609.html