自定义web框架(不完整版)
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',9999))
server.listen(128)
while True:
msg,address=server.accept()
content=msg.recv(1024)
print(content)#接受到的内容是请求报文
content=content.decode('utf-8')
print(content)
#给浏览器发送内容
msg.send('HTTP/1.1 200 OK\r\n'.encode('utf-8'))#设置响应首行
msg.send('\r\n'.encode('utf-8'))#设置响应空行
msg.send('xiaoxiaozheng520'.encode('utf-8'))#设置响应体内容
msg.close()
根据不同的路径返回不同的内容
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',9998))
server.listen(128)
while True:
server_sk, address = server.accept()
content = server_sk.recv(1024)
print(content) # 接受到的内容是请求报文
content = content.decode('utf-8')
print('客户端发来内容:')
print(content)
header_list=content.split('\r\n')
print(header_list)
title_list=header_list[0].split(' ')
print(title_list)
path=title_list[1]
print(path)
if path=='/home':
msg='这是{}页面'.format(path).encode('utf-8')
elif path=='/index':
msg='this is a {} path'.format(path).encode('utf-8')
else:
msg='sorry {} 404 not found...'.format(path).encode('utf-8')
#向页面返回内容
msg1='HTTP/1.1 200 ok\r\n'.encode('utf-8')
msg2 = 'Context-Type:text/html;charset=utf-8\r\n'.encode('utf-8') # 设置响应头
# 告诉浏览器,返回的是文本类型的HTML,并且以utf-8 编码进行解码
msg3 = ('\r\n'.encode('utf-8')) # 设置响应空行
server_sk.send(msg1)
server_sk.send(msg2)
server_sk.send(msg3)
server_sk.send(msg)
server_sk.close()
根据不同的路径返回不同的内容–函数版
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',9998))
server.listen(128)
def index(path):
msg='这是{}页面'.format(path)
return msg.encode('utf-8')
def home(path):
msg = '这是{}页面'.format(path)
return msg.encode('utf-8')
def error(path):
msg='sorry {} 404 not found...'.format(path)
return msg.encode('utf-8')
while True:
server_sk, address = server.accept()
content = server_sk.recv(1024)
print(content) # 接受到的内容是请求报文
content = content.decode('utf-8')
print('客户端发来内容:')
print(content)
header_list=content.split('\r\n')
print(header_list)
title_list=header_list[0].split(' ')
print(title_list)
path=title_list[1]
print(path)
if path=='/home':
msg=index(path)
elif path=='/index':
msg=home(path)
else:
msg='sorry {} 404 not found...'
#向页面返回内容
msg1='HTTP/1.1 200 ok\r\n'.encode('utf-8')
msg2 = 'Context-Type:text/html;charset=utf-8\r\n'.encode('utf-8') # 设置响应头
# 告诉浏览器,返回的是文本类型的HTML,并且以utf-8 编码进行解码
msg3 = ('\r\n'.encode('utf-8')) # 设置响应空行
server_sk.send(msg1)
server_sk.send(msg2)
server_sk.send(msg3)
server_sk.send(msg)
server_sk.close()
根据不同的路径返回不同的内容–函数进阶版
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',9999))
server.listen(128)
def index(path):
msg='这是{}页面'.format(path)
return msg.encode('utf-8')
def home(path):
msg = '这是{}页面'.format(path)
return msg.encode('utf-8')
def error(path):
msg='sorry {} 404 not found...'.format(path)
return msg.encode('utf-8')
path_list=[
('index',index),
('home',home),
('error',error)
]
while True:
server_sk, address = server.accept()
content = server_sk.recv(1024)
print(content) # 接受到的内容是请求报文
content = content.decode('utf-8')
print('客户端发来内容:')
print(content)
header_list=content.split('\r\n')
print(header_list)
title_list=header_list[0].split(' ')
print(title_list)
path=title_list[1]
print(path)
function=None
for path_tup in path_list:
if path_tup[0]==path:
function=path_tup[1]#将函数地址复制给function
break
if function:
msg=function(path)
else:
msg=error(path)
#向页面返回内容
msg1='HTTP/1.1 200 ok\r\n'.encode('utf-8')
msg2 = 'Context-Type:text/html;charset=utf-8\r\n'.encode('utf-8') # 设置响应头
# 告诉浏览器,返回的是文本类型的HTML,并且以utf-8 编码进行解码
msg3 = ('\r\n'.encode('utf-8')) # 设置响应空行
server_sk.send(msg1)
server_sk.send(msg2)
server_sk.send(msg3)
server_sk.send(msg)
server_sk.close()