Python静态web服务器

1. 首先,需要导入socket模块来建立Socket连接,开启监听端口。

import socket

HOST, PORT = '', 8888 # 监听地址和端口

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建TCP Socket对象

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 设置socket选项,可复用地址

s.bind((HOST, PORT)) # 绑定地址和端口

s.listen(16) # 开始监听客户端连接

2. 接下来,需要实现解析HTTP请求的函数,包括读取请求报文、解析报文头部、查询请求文件是否存在等。

def handle_request(request):

    request_lines = request.split('\r\n')

    method, path, http_version = request_lines[0].split(' ')

    file_path = path[1:]

    if file_path == '':

        file_path = 'index.html'

    try:

        with open(file_path, 'rb') as f:

            response_body = f.read()

        status_line = 'HTTP/1.1 200 OK\r\n'

    except FileNotFoundError:

        response_body = b'<h1>404 Not Found</h1>'

        status_line = 'HTTP/1.1 404 Not Found\r\n'

    headers = 'Content-Type: text/html; charset=utf-8\r\n'

    response = status_line + headers + '\r\n' + response_body.decode('utf-8')

    return response

3. 接着,需要实现处理客户端连接的函数,接收客户端请求,调用解析HTTP请求的函数生成响应报文并发送给客户端。

def handle_client(conn):

    request = conn.recv(1024).decode('utf-8')

    response = handle_request(request)

    conn.sendall(response.encode('utf-8'))

    conn.close()

4. 最后,需要使用无限循环等待客户端连接,接收客户端请求并交给处理客户端连接的函数来处理。

while True:

    conn, addr = s.accept() # 接收客户端连接

    print('Connected by', addr)

    handle_client(conn) # 处理客户端连接

通过以上步骤,就实现了一个简单的静态Web服务器。

猜你喜欢

转载自blog.csdn.net/2201_75480526/article/details/129318992