После мой сервер код до сих порКак узнать, какой клиент посылает сообщение серверу
def multipleClients():
global counter=0
conn, addr = s.accept()
counter=counter+1
all_clients.append(conn)
print "is connected :D :)", addr
i=0
name= conn.recv(1024)
while True:
while i<counter:
if all_clients[counter] == conn #comparing the current client with the one which sent the message:
name=conn.recv(1024)
data= conn.recv(1024)
if not data:
break
print repr(name),":"
print "message is :", repr(data)
for c in all_clients:
n= name,":"
c.sendall(data)
counter=0
Выше только многопоточный функция, принимающая соединения и т.д. Я хочу, чтобы проверить, какой клиент отправил сообщение потому что только одному клиенту разрешено отправлять сообщение за раз. Кроме того, клиент, отправивший сообщение, может отправлять сообщение только после того, как все остальные клиенты отправили сообщения по очереди. Я знаю, что мой вышеприведенный подход «если утверждение» неверен. В приведенном выше коде сервер просто получает сообщение и имя от клиента и отправляет его всем клиентам. Информация о подключенных клиентах хранится в списке
Вы видели [chatserver.py] (https://github.com/circuits/circuits/blob/master/examples/chatserver.py)? –
Кажется, у вас есть это назад. Поскольку это многопоточность, будет задействована несколько потоков, выполняющих эту функцию. Каждый поток будет говорить только с одним клиентом (тот, который вы получаете от 's.accept()'), поэтому, когда вы «recv», нет никаких сомнений в том, из кого он пришел. – crazyhatfish
@ theSmallNothing Я получаю вашу мысль. Но как я могу поместить блокировку на другие потоки, кроме одного из main()? – puffles