使用Python编写一个简单的网页服务器
发布时间:2023-12-04 15:20:22
下面是一个使用Python编写的简单的网页服务器及使用例子:
import http.server
import socketserver
PORT = 8000
# 创建一个自定义的请求处理程序
class MyHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
try:
# 根据请求的路径返回不同的页面
if self.path == '/':
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Hello, World! This is the home page.')
elif self.path == '/about':
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'This is the about page.')
else:
self.send_response(404)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Page not found.')
except Exception as e:
self.send_response(500)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Internal Server Error.')
print('Error:', e)
# 使用socketserver创建一个简单的HTTP服务器
with socketserver.TCPServer(("", PORT), MyHandler) as httpd:
print("Server started at localhost:%s" % PORT)
httpd.serve_forever()
这个服务器监听本地的8000端口。通过访问http://localhost:8000/可以查看主页,访问http://localhost:8000/about 可以查看关于页面。
基本流程如下:
1. 导入必要的模块。
2. 设置一个监听的端口(这里使用8000)。
3. 创建一个自定义的请求处理程序(继承自http.server.SimpleHTTPRequestHandler)。
4. 在请求处理程序中定义相应的处理方法(这里只实现了do_GET)。
5. 在do_GET方法中根据请求的路径(self.path)返回不同的页面。
6. 如果没有匹配的路径,返回404错误。
7. 如果在处理过程中发生异常,返回500错误。
8. 使用socketserver模块的TCPServer类创建一个简单的HTTP服务器,并指定监听的地址和端口。
9. 使用serve_forever方法启动服务器,开始监听请求。
你可以通过运行这个脚本后,在浏览器中访问相应的URL来查看服务器的响应。
