我写了我的两个类
class RequestHandler(http.server.SimpleHTTPRequestHandler):
class Server(socketserver.TCPServer):
这样一个独特的服务器就可以处理常规的浏览器、ajax 和 websocket 请求。
它工作正常。
我只是找不到终止服务器的方法。所以我杀死了这个过程。
[编辑] 当它收到来自浏览器的关闭请求时,我需要关闭服务器。我尝试设置
self.__shutdown_request
没错,但它没有用。此外,在我关闭浏览器并终止进程后,netstat 告诉我有一些套接字
仍然使用服务器的端口,处于 TIME_WAIT 状态。所以我必须等他们死了才能再次使用同一个端口。
如何终止服务器?
有没有办法去掉那些 socket ?
最佳答案
可能你可以试试Server.shutdown
的方法关闭服务器。正如 Python 文档所解释的,这个方法告诉 Server.serve_forever
循环停止并等待它停止。
顺便说一句,虽然您可以设置 SO_LINGER ON 以避免 TCP 套接字的 TIME_WAIT 状态,但不鼓励这样做。另一种方法是在绑定(bind)服务器端口之前设置 SO_REUSEADDR。
关于python - 如何停止 TCPServer,如何删除 TIME_WAIT 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378809/