web框架:含代码

自定义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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小争520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值