# 循環遍歷每個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發送的消息
即:循環會一直被阻塞,知道接收到消息才能執行。
這個問題應該怎么解決
Python 循環遍歷socket傳輸的消息時,循環被阻塞
ibeautiful
2018-08-04 07:19:27