为了账号安全,请及时绑定邮箱和手机立即绑定

Python 循环遍历socket传输的消息时,循环被阻塞

Python 循环遍历socket传输的消息时,循环被阻塞

ibeautiful 2018-08-04 07:19:27
# 循环遍历每个client对应socket接收消息放入到消息队列中 def receiver():     print "receiver线程启动" while True:         for keyTemp in clients.keys():             sock = clients[keyTemp]             try:                 data = sock.recv(BufferSize)             except Exception:                 pass             if data is None:                 continue             elif data =="":                 continue             else:                 print clients.keys()                 print "接收到新消息"+keyTemp+":"+data                 Message = {}                 Message[keyTemp] = data                 MessageQueue.append(Message)                 print MessageQueue                 print MessageQueue[0] 这个代码是用python写了,感觉原理差不多吧! 问题:当我有两个用户在线["123","456"]时这个循环会遍历用户名所映射的socket通过sock.recv(BufferSize)这个语句接收消息 当用户名为456的发送消息如:“你好!世界”我的服务器是不能接收到这个消息 只有当用户名为123的用户发送完消息后服务器才能才能接受到用户456发送的消息 即:循环会一直被阻塞,知道接收到消息才能执行。 这个问题应该怎么解决
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

用多线程应该可以解决,不懂python,之前用C#做过,太久了忘了,大概就是有阻塞的地方开个新线程就可以了。


查看完整回答
反对 回复 2018-08-23
  • 1 回答
  • 0 关注
  • 997 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信