迷你web服务端

import re
import socket
from multiprocessing import Process

进程处理函数,专门处理客户端的请求

def handle_client(client_skt):
# 接收客户端数据
recv_data = client_skt.recv(1024)
# 按照换行进行切割
request_lines = recv_data.splitlines()

if request_lines:
    # 提取请求行
    request_method_line = request_lines[0].decode('utf-8')
    # 提取文件名
    file_name = re.match('[^/]+(/[^ ]*)', request_method_line).group(1)
else:
    # 空白请求
    file_name = '/'

if file_name == '/':
    file_name = document_root + '/index.html'
else:
    file_name = document_root + file_name
# print(file_name)
try:
    fp = open(file_name)
except IOError:
    response_lines = 'HTTP/1.1 404 page not found\r\n'
    response_body = '@_@,sorry file not found'
else:
    response_lines = 'HTTP/1.1 200 ok\r\n'
    response_body = fp.read()
    fp.close()
finally:
    response = response_lines + '\r\n' + response_body
    client_skt.send(response.encode('utf-8'))
    client_skt.close()

网站静态资源目录

document_root = ‘./html’

if name == ‘main’:
# 创建TCP套接字
server_skt = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
# 绑定主机和端口
server_skt.bind((’’, 8880))
# 监听服务
server_skt.listen(20)
while True:
# 阻塞,等待客户端连接
client_skt, client_addr = server_skt.accept()
# 创建一个新的进程处理请求
client_process = Process(target=handle_client, args=(client_skt,))
# 启动进程
client_process.start()
# 关闭连接
client_skt.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值