版权声明: 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.这个知识有什么用,干啥
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()