首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止TCPServer

如何停止TCPServer
EN

Stack Overflow用户
提问于 2018-01-26 02:58:49
回答 1查看 2.8K关注 0票数 3

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

正如在下面的代码中定义的那样,TCPServer启动。但它只在第一次迭代时开始。另外两次迭代都无法启动TCPServer,因为端口8000已经被在前一次(第一次)迭代中启动的TCPServer使用。为了确保端口8000可用,需要关闭先前启动的TCP服务器。

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-26 03:49:48

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

对于您的代码,它应该像这样简单

代码语言:javascript
复制
    httpd.serve_forever()
    print('httpd server has been successfully started ')
    httpd.shutdown()
    httpd.server_close()
    print('httpd server has been successfully stopped')

我将把它留给OP,以便更好地使用这个示例和链接页面底部的示例,以满足所需的要求。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48450053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档