0
我創建一個簡單的客戶端 - 服務器聊天系統。我使用TCP和Im意識到TCP是端到端。但是Im試圖將我從一個客戶端接收到的數據轉發給數組中的下一個客戶端。但在下面的代碼,我試着將它發送給所有的客戶端(甚至失敗:d) 這裏是我的代碼:發送數據到多個客戶端
from socket import *
from os import *
from threading import *
def multipleClients():
all_clients = []
conn, addr = s.accept()
all_clients.append(conn)
print "is connected :D :)", addr
while True:
data= conn.recv(1024)
if not data:
break
print "message is :", repr(data)
for c in all_clients:
c.send(data)
host='localhost'
port=12000
s=socket(AF_INET, SOCK_STREAM)
s.bind((host, port))
s.listen(5)
print "Server is Running :D :p "
for i in range (5):
Thread(target=multipleClients).start()
您的變量'all_clients'是本地的,因此每個trhead有一個(不同的)副本。所以在每個副本中,該列表中都有一個'conn'套接字。您需要將該列表設置爲全局,但是您必須處理來自不同trhead的同一列表的併發訪問。最好使用'Queue'來代替。 – JLDiaz