我正在使用与 Android 连接并定期发送消息的 python 套接字服务器。我有一个问题,请求在每条发送的消息上都关闭,我需要它保持打开状态,直到 Android 决定关闭它。
目前它看起来像这样:
class SingleTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
try:
while True:
message = self.rfile.readline().strip() # clip input at 1Kb
my_event = pygame.event.Event(USEREVENT, {'control':message})
pygame.event.post(my_event)
except KeyboardInterrupt:
sys.exit(0)
finally:
self.request.close()
我通过while True
在我的handle()
定义中添加 a 解决了这个问题,但是,这被批评为一个糟糕的解决方案,正确的方法是覆盖process_request
andshutdown
方法。
解决方案的尝试
我while
从代码中删除了,用netcat本地连接到服务器,发送了一条消息,然后去看看什么时候关闭连接。
我想看看关闭连接以找出我必须覆盖的方法是什么。
我已经通过调试器逐步完成serve_forever()
并跟随它到这部分代码:
> /usr/lib/python2.7/threading.py(495)start()
494 try:
--> 495 _start_new_thread(self.__bootstrap, ())
496 except Exception:
通过第 495 行后(我无法进入它),连接将关闭。
我不知何故怀疑通过套接字维持连接是否如此忙碌,这基本上是我们选择通过套接字进行通信的原因,以建立连续连接而不是“每个发送消息一个连接”系统。
关于实施的想法或链接?