gpt4 book ai didi

python - 停止 UDP SocketServer

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:11 25 4
gpt4 key购买 nike

我正在创建一个 UDP SocketServer,如果我收到来自客户端的关闭消息,我想关闭而不是关闭 UDP 连接。

当我收到消息时,将显示 Begin,但不会显示 Finished。我怎样才能退出这个线程?

class MyUDPHandler( SocketServer.BaseRequestHandler ):       
def handle( self ):
data = self.request[0].strip()
dic = self.string_XML_to_dic( data )
if( dic['Cmd'] == str(UDPConst().SHUT_DOWN )):
print('Begin')
self.server.shutdown()
print("Finished")

if __name__ == "__main__":
HOST, PORT = "", prop['udpport']
server = SocketServer.UDPServer( ( HOST, PORT ), MyUDPHandler )
server.serve_forever()

最佳答案

因为你没有在它自己的线程中运行服务器(为此你需要继承 ThreadingMixIn),你不能使用 shutdown 因为它会导致死锁。来自 source 中的函数文档注释:

Blocks until the loop has finished. This must be called while serve_forever() is running in another thread, or it will deadlock.

关于python - 停止 UDP SocketServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com