如何停止 TCPServer

How to stop TCPServer

每三次迭代都需要启动 TCPServer,然后立即停止。 3次都需要在8000端口启动。

如以下代码中所定义,TCPServer 启动。但它仅在第一次迭代期间开始。另外两次迭代无法启动 TCPServer,因为端口 8000 已被在先前(第一次)迭代中启动的 TCPServer 使用。 为确保端口 8000 可用,需要关闭之前启动的 TCP 服务器。

如何终止(停止)已经运行 TCPServer?

import SimpleHTTPServer
import SocketServer


def startServer():
    Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
    Handler.extensions_map.update({'.webapp': 'application/x-web-app-manifest+json', })
    try:
        httpd = SocketServer.TCPServer(("", 8000), Handler)
        httpd.serve_forever()
        print('httpd server has been successfully started ')
    except Exception, e:
        print(e)


for i in range(3):
    startServer()

使用 shutdown() 告诉 serve_forever() 循环停止并等待它停止。 2.6 版中的新功能。 docs.python.org/2/library/socketserver.html

对于您的代码,它应该像

一样简单
    httpd.serve_forever()
    print('httpd server has been successfully started ')
    httpd.shutdown()
    httpd.server_close()
    print('httpd server has been successfully stopped')

我会留给 OP 更好地使用这个和链接页面底部的示例来满足所需的要求。