# 循環(huán)遍歷每個(gè)client對應(yīng)socket接收消息放入到消息隊(duì)列中
def receiver():
print "receiver線程啟動(dòng)"
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]
這個(gè)代碼是用python寫了,感覺原理差不多吧!
問題:當(dāng)我有兩個(gè)用戶在線["123","456"]時(shí)這個(gè)循環(huán)會(huì)遍歷用戶名所映射的socket通過sock.recv(BufferSize)這個(gè)語句接收消息
當(dāng)用戶名為456的發(fā)送消息如:“你好!世界”我的服務(wù)器是不能接收到這個(gè)消息
只有當(dāng)用戶名為123的用戶發(fā)送完消息后服務(wù)器才能才能接受到用戶456發(fā)送的消息
即:循環(huán)會(huì)一直被阻塞,知道接收到消息才能執(zhí)行。
這個(gè)問題應(yīng)該怎么解決
Python 循環(huán)遍歷socket傳輸?shù)南r(shí),循環(huán)被阻塞
ibeautiful
2018-08-04 07:19:27