如何停止 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 更好地使用这个和链接页面底部的示例来满足所需的要求。
每三次迭代都需要启动 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 更好地使用这个和链接页面底部的示例来满足所需的要求。