如何停止TCPServer

时间:2018-01-25 18:58:49

标签: python sockets tcpserver socketserver

在三次迭代中,TCPServer需要启动然后立即停止。所有这三次都需要在端口8000上启动。

如下面的代码中所定义,TCPServer启动。但它仅在第一次迭代期间开始。另外两次迭代无法启动TCPServer,因为在前一次(第一次)迭代中启动的TCPServer已经在使用端口8000。 要确保端口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()

1 个答案:

答案 0 :(得分:3)

使用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,以便更好地使用此链接页面底部的示例,以满足所需的要求。