初学时,建议各位命名变脸的时候要见名知意,不要学我图省事
import socket
if __name__ == '__main__':
a = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
a.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
a.bind(('', 8080))
a.listen()
while True:
conn, ip = a.accept()
conn_recv = conn.recv(4096)
if len(conn_recv) > 0:
recv_data = conn_recv.decode('utf-8')
print(recv_data)
recv_data_split = recv_data.split(' ', 2)[1]
print(recv_data_split)
# 如果recv_data_split = '/' ,则应该让其访问项目的首页!
if recv_data_split == '/':
recv_data_split = '/index.html'
try:
with open('static' + recv_data_split, 'rb') as f:
f.data = f.read()
except Exception as e:
# 设置响应行
response_line = 'HTTP/1.1 404 Not Found\r\n'
# 响应头
response_header = 'Server:PWB1.0\r\n'
# 响应体
with open('static/error.html', 'rb') as f:
f.data = f.read()
response_body = f.data
# 组装响应数据
response_data = (response_line + response_header + '\r\n').encode('utf-8') + response_body
# 发送数据
conn.send(response_data)
else:
# 设置响应行
response_line = 'HTTP/1.1 200 ok\r\n'
# 响应头
response_header = 'Server:PWB1.0\r\n'
# 响应体
response_body = f.data
# 组装响应数据
response_data = (response_line + response_header + '\r\n').encode('utf-8') + response_body
#发送数据
conn.send(response_data)
finally:
conn.close()
静态web服务器返回指定页面
最新推荐文章于 2025-12-05 17:02:52 发布
该博客介绍了一个简单的Python HTTP服务器的实现,通过socket库监听8080端口,接收并处理客户端请求。服务器根据接收到的路径信息决定返回静态文件(如错误页面或index.html),特别地,当路径为'/'时,服务器会提供首页。若无法找到对应的文件,服务器将返回404错误页面。
186

被折叠的 条评论
为什么被折叠?



