【发布时间】:2015-05-30 09:59:41
【问题描述】:
以下是我目前的服务器代码
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
以上只是接受连接等的多线程函数。 我想检查哪个客户端发送了消息,因为一次只允许一个客户端发送消息。而且,发送消息的客户端只有在所有其他客户端都轮流发送消息后才能再次发送消息。我确实知道我上面的方法“if 语句”是不正确的。 在上面的代码中,服务器只是从客户端接收消息和名称并将其发送给所有客户端。连接的客户信息存储在列表中
【问题讨论】:
-
你见过chatserver.py吗?
-
你似乎把它弄反了。由于这是多线程的,因此将有多个线程运行此函数。每个线程只会与一个客户(您从
s.accept()获得的客户)交谈,因此当您recv时,毫无疑问它来自谁。 -
@theSmallNothing 我明白你的意思。但是,除了 main() 中的一个,我如何才能锁定其他线程?
标签: python client-server