如何学习http协议的组成和代码

版权声明: https://blog.csdn.net/weixin_42157608/article/details/80364993
#http协议
1.规定了浏览器与tcp服务器之间的数据传递的规范或者格式

#请求头  
#浏览器给我们的服务器访问的地址
#格式:
GET(请求的方式) /index.html地址  HTTP/1.1(HTTP协议版本)
#响应
格式:响应头
空行
响应体
 
#响应头作用
1.控制浏览器的显示

#响应体作用
1.显示

#响应的字段
content-type:text/html;charset=utf-8  #这个中文使用
content-length:5  #这个控制显示多个


#响应状态 这个是给程序员看的
HTTP/1.1 200 OK 这个说明成功了
404 Not Found :网页找不到


302 Found:重定向(换个网页)
304 :说明没有权限
500:服务器挂了

#网页展示数据
1;加载网页的文字内容
2.加载其他的资源(图片<img src="xxx.jpg">,css,js

#知识点怎么才算会了
1.这个知识是什么,叫什么名字
2.这个知识有什么用,干啥

3.这个知识点怎么实现,代码怎么写(写三边有个印象)

import re
import socket


def main():
	"""创建一个tcp服务器端处理数据"""
	# F2定位到错误
	# 创建一个tcp
	# 1.创建一个socket对象
	tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	# 重用
	tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
	# 2.绑定端口
	tcp_server.bind(("", 7890))
	# 3.被动模式
	tcp_server.listen(128)

	# 循环接收用户的请求
	while True:
		# 得到用户的请求
		client, address = tcp_server.accept()

		# 打印请求的数据
		data = client.recv(1024).decode("utf-8")
		# print(data)

		# 获取地址
		headers = data.splitlines()  # 这个是按行进行列表生成
		print(headers[0])

		# GET / HTTP / 1.1  /index.html
		ret = re.match(r'[^/]+(/[^ ]*)', headers[0])
		file_name = ret.group(1)
		print(file_name)  # /index.html

		# 根据不同的地址返回不同的数据
		with open("./html%s" % file_name, "r") as f:
			content_page = f.read()

		# 发送数据
		# 响应的格式:
		# 响应头
		# 空行
		# 响应体

		head = "HTTP/1.1 200 OK\r\n"

		content = head + "\r\n" + content_page

		# 发送数据了
		client.send(content.encode("utf-8"))

		# 关闭
		client.close()

	# 关闭
	tcp_server.close()


if __name__ == '__main__':
	main()


猜你喜欢

转载自blog.csdn.net/weixin_42157608/article/details/80364993