BaseHTTPServer.HTTPServer类中的__init__()方法详解
在Python中,BaseHTTPServer.HTTPServer 是一个简单的HTTP服务器的实现。它是SocketServer.TCPServer的一个子类,它使用BaseHTTPServer.BaseHTTPRequestHandler来处理客户端的请求。
BaseHTTPServer.HTTPServer的__init__()方法的签名如下:
class BaseHTTPServer.HTTPServer(server_address, RequestHandlerClass)
参数说明:
- server_address:服务器的地址和端口号,通常以元组的形式表示,例如:('localhost', 8000)
- RequestHandlerClass:处理客户端请求的处理类,通常是BaseHTTPServer.BaseHTTPRequestHandler的子类
BaseHTTPServer.HTTPServer的__init__()方法将会创建一个新的HTTP服务器实例,并绑定到指定的地址和端口号。它通过调用父类SocketServer.TCPServer的__init__()方法来实现。
下面是一个使用BaseHTTPServer.HTTPServer的示例:
import BaseHTTPServer
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('Hello, World!')
def main():
try:
server = BaseHTTPServer.HTTPServer(('localhost', 8000), MyHandler)
print('HTTP Server started on http://localhost:8000')
server.serve_forever()
except KeyboardInterrupt:
server.socket.close()
if __name__ == '__main__':
main()
在上面的示例中,我们首先定义了一个处理类MyHandler,它继承自BaseHTTPServer.BaseHTTPRequestHandler。处理类中定义了一个处理GET请求的方法do_GET(),它将返回一个简单的“Hello, World!”消息。
然后,在main()函数中创建了一个BaseHTTPServer.HTTPServer实例,并将服务器地址和处理类传递给构造函数。接着调用serve_forever()方法来启动服务器,并通过KeyboardInterrupt异常来捕获停止服务器的信号。
当我们运行该程序时,HTTP服务器将会在localhost的8000端口启动。当我们在浏览器中访问http://localhost:8000时,服务器将会返回一个“Hello, World!”消息。
