Python基础--简单的web服务器

Python基础–简单的web服务器

实现步骤
1.获取用户请求路径
2.根据路径,返回指定内容
3.组装报文,返回给客户端
4.如果没有指定路径页面,返回404给到客户

import socket


def client_exec(client):
    """
    # 处理客户请求
    :param client:客户端
    :return: none
    """
    data = client.recv(1024)
    if data:
        # 解码为utf-8
        decode_data = data.decode("utf-8")
        # 切割数据,最大切割次数是2
        split_data = decode_data.split(" ", maxsplit=2)
        if len(split_data) > 2:
            file_path = split_data[1]
            if file_path == "/":
                file_path = "/index.html"
        else:
            client.close()
            return
    else:
        client.close()
        return

        # 判断path地址,并根据匹配访问指定页面
    if file_path == "/index.html":

		# 组装http状态码为 200的响应头
        rep_line = "http/1.1 200 ok \r\n"
		# 因为这个地方是汉字,所以需要单独指定下文本格式类型,下同
        rep_head = 'content-type:text/html;charset=utf-8\r\n'
        rep_emp = "\r\n"
        rep_body = "你好"
        rep_cont = rep_line + rep_head + rep_emp + rep_body
        # 将发送出去的文本内容编码为`utf-8`在经过套接字发送给客户端
        client.send(rep_cont.encode("utf-8"))
    else:
		
		# 组装http状态码为 404的响应头
        rep_line = "http/1.1 404 not found\r\n"
        rep_head = 'content-type:text/html;charset=utf-8\r\n'
        rep_emp = "\r\n"
        rep_body = "页面有问题"
        rep_cont = rep_line + rep_head + rep_emp + rep_body
        client.send(rep_cont.encode("utf-8"))
    client.close()


def main():
	"""
	主函数
	"""
    # 初始化套接字
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 设置端口复用
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    # 绑定端口
    server_socket.bind(('', 8081))
    # 监听端口
    server_socket.listen(128)
    while True:
        client, address = server_socket.accept()
        # 处理客户端信息
        client_exec(client)
        # 关闭端口

    server_socket.close()


if __name__ == '__main__':
    main()

如何访问,可以在pycharm中运行此程序,代码格式必须调好,python对应代码的缩进要求比较严格
当运行完这个代码之后,可以在本地的浏览器上直接输入127.0.0.1:8081进行访问即可,
Tips:表点符号全英文
分别测试/和非/

  • 上述代码,比较重要的点有2个地方,
    • 1.怎么获取到客户的访问路径,这里采用最简单的方式,切片,取到路径
    • 2.根据上面取到的路径,进行判断.返回指定路径的界面.如果无界面,则返回404

目前这个是是最简单版的server的建设,后面,还会设置成多任务版的,当然还有最重要的动静分离.因为最近一直有点忙,所以更新上有点慢,请谅解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值