了解Python中的HTTPServer()类及其功能
Python中的HTTPServer()类是一个简单的HTTP服务器类,它继承自BaseHTTPServer模块的BaseHTTPRequestHandler类。HTTPServer类主要用于构建一个基本的Web服务器,可以接收HTTP请求,并发送相应的HTTP响应。
HTTPServer类的常用功能包括:
1. 监听端口:HTTPServer对象通过调用其listen()方法来监听指定的ip地址和端口号,以等待客户端的连接请求。
2. 接收请求:HTTPServer对象会等待客户端发送HTTP请求,一旦收到请求,就会调用处理请求的处理程序来处理。
3. 处理请求:处理请求的方法必须在HTTPServer中指定,可以通过继承HTTPServer类并覆盖BaseHTTPRequestHandler类的do_GET()、do_POST()等方法来实现。
4. 发送响应:处理请求后,HTTPServer对象会调用处理程序指定的方法来生成HTTP响应,并通过调用send_response()、send_header()、end_headers()和wfile.write()等方法将响应发送回客户端。
下面是一个使用HTTPServer类创建简单Web服务器的例子:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(b"<html><head><title>Hello World</title></head>")
self.wfile.write(b"<body><p>Hello World!</p></body></html>")
def run():
server_address = ("", 8000)
httpd = HTTPServer(server_address, MyHandler)
print("Server running...")
httpd.serve_forever()
if __name__ == "__main__":
run()
在上面的例子中,我们首先导入了BaseHTTPRequestHandler和HTTPServer类。然后创建了一个名为MyHandler的处理程序类,它继承自BaseHTTPRequestHandler类,并覆盖了do_GET()方法来处理GET请求。在do_GET()方法中,我们首先发送了响应的状态码、响应头和空行,然后通过wfile来发送HTML响应。
最后,我们在run()函数中创建了HTTPServer对象,并通过调用其serve_forever()方法来启动服务器。服务器将一直运行,监听并处理来自客户端的请求。当然,你也可以通过调用shutdown()方法来关闭服务器。
