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

# 循环遍历每个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发送的消息
即:循环会一直被阻塞,知道接收到消息才能执行。
这个问题应该怎么解决


ibeautiful
浏览 998回答 1
1回答

杨__羊羊

用多线程应该可以解决,不懂python,之前用C#做过,太久了忘了,大概就是有阻塞的地方开个新线程就可以了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python