http_WEB静态服务器部分,02_多任务返回指定页面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDNgaoqingrui/article/details/80827806
                                                    http_WEB静态服务器部分,02_多任务返回指定页面


import re
import socket
import gevent
from gevent import monkey

monkey.patch_all()


def http_client(client_sk):
    client_request = client_sk.recv(1024)
    request = client_request.decode("utf-8")
    file_name = re.search("/\S*", request)
    if not file_name:
        client_sk.close()
        print('file_name is None')
        return
    file_path = file_name.group()
    if "/" == file_path:
        file_path = "/index.html"
    # 打开文件,读取内容
    try:
        with open('static' + file_path, 'rb') as f:
            file_data = f.read()
    except Exception as e:
        print(e)
        response_start_line = "HTTP/1.1 404 Not Found\r\n"
        response_headers = "Server: My server\r\n"
        response_body = "<h1>The file is not found!</h1>".encode("utf-8")
        response = (response_start_line + response_headers + "\r\n").encode('utf-8') + response_body
        client_sk.send(response)
    else:
        # 构造响应数据
        response_start_line = "HTTP/1.1 200 OK\r\n"
        response_headers = "Server: My server\r\n"
        response_body = file_data
        response = (response_start_line + response_headers + "\r\n").encode('utf-8') + response_body
        client_sk.send(response)
    finally:
        client_sk.close()


def main():
    server_sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_sk.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    server_sk.bind(('', 6500))
    server_sk.listen(128)

    while True:
        client_sk, client_ipport = server_sk.accept()
        print('%s, %s用户已连接' % client_ipport)
               gevent.spawn(http_client, client_sk)

if __name__ == '__main__':
    main()






猜你喜欢

转载自blog.csdn.net/CSDNgaoqingrui/article/details/80827806