Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)
Posted simon-idea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)相关的知识,希望对你有一定的参考价值。
@
1.说明
使用正则表达式,匹配客户端的请求头
获取到请求的路径
返回对应请求路径的文字
可以使用打开对应文件的方式去返回对应的文件
2.代码
from socket import *
import re
def service_client(new_socket):
'''为这个客户端返回数据'''
# 1.接收浏览器发送过来的请求,即http请求
#GET /HTTP/1.1
# ...
request = new_socket.recv(1024).decode("utf-8")
request_lines = request.splitlines()
print(request_lines)
#GET /index.html HTTP/1.1
#get post put del
ret = re.match(r"[^/]+/[^ ]*",request_lines[0])
file_name = ""
if ret:
file_name = ret.group(0)
#2,返回http格式的数据给浏览器
#2.1准备发送给浏览器的数据 ---header
response = "HTTP/1.1 200 OK\r\n"#正常浏览器\r\n代表的是换行
response += "\r\n"
#2.2准备发送给浏览器的数据
response = response + file_name
new_socket.send(response.encode("utf-8"))
#3.关闭套接字
new_socket.close()
def main():
'''用来完成整体的控制'''
#1.创建套接字
tcp_server_socket = socket(AF_INET, SOCK_STREAM)
# 2.绑定本地信息
port = 7777
address = ('', port)
tcp_server_socket.bind(address)
# 3.变为监听,将主动套接字变为被动套接字
tcp_server_socket.listen(128)
#等待连接
while True:
client_socket, clientAddr = tcp_server_socket.accept()
# 接收对方发送过来的数据
service_client(client_socket)
# 关闭监听套接字
tcp_server_socket.close()
if __name__ == "__main__":
main()
关于作者
个人博客网站
个人GitHub地址
个人公众号:
以上是关于Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)的主要内容,如果未能解决你的问题,请参考以下文章
静态Web服务器-返回固定页面数据Python解释器详解实现代理池的API模块