几句话读懂--架构核心

import socket
import time
“”"
socket.AF_INET: 基于网络
socket.SOCK_STREAM: 基于 TCP 协议
“”"
server_sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定IP地址,并监听9999端口
server_sk.bind((‘127.0.0.1’,9999))
#建立socket最大链接128个
server_sk.listen(128)

def index(url):
#读取index.html文件
with open(‘index.html’,‘r’,encoding=‘utf-8’) as f:
s=f.read()
return s
def hero_list(url):
with open(‘hreo_list.html’,‘r’,encoding=‘utf-8’) as f:
s=f.read()
#将文件中的字符串狄仁杰改为当前时间戳
s=s.replace(‘狄仁杰’,str(time.time()))
return s
def error(url):
return ‘404错误’
#将地址和函数放入一个列表中
func_list=[
(’/index’,index),
(’/hero_list’,hero_list)
]
while True:
new_sk,addr=server_sk.accept()
#decode 将接受到的二进制字符进行解码
content=new_sk.recv(1024).decode()
#通过切片找出路径
ret=content.split(’\r\n’)[0]
url=ret.split(’ ‘)[1]
#根据路径来调用函数,从而显示出需要显示的页面
f=None
for func in func_list:
if url==func[0]:
f=func[1]
if f:
response=f(url)
else:
response=error(url)
#向浏览器发送内容
#encode 将字符串进行编码
new_sk.send(‘HTTP/1.1 200 OK\r\n’.encode())
new_sk.send(‘Content-Type:text/html;charset=utf-8\r\n’.encode())
new_sk.send(’\r\n’.encode())
#发送的具体内容
new_sk.send(response.encode())
new_sk.close()
server_sk.close()

猜你喜欢

转载自blog.csdn.net/weixin_44204091/article/details/87885228
今日推荐