def sendToAllClients(messageSender, message):
# Formatting the message
messageHeader = f"{len(message) :< {HEADER_LENGTH}}".encode('utf-8')
messageList = {'header': messageHeader, 'data': message.encode('utf-8')}
# Send the message to all clients
for client in clients:
client.send(messageSender['header'] + messageSender['data'] + messageList['header'] + messageList['data'])
def sendMessageTo(messageSender, message, messageTargetUsername):
# Formatting the message
messageHeader = f"{len(message) :< {HEADER_LENGTH}}".encode('utf-8')
messageList = {'header': messageHeader, 'data': message.encode('utf-8')}
# Go through all clients
for client in clients:
# If the client has the same username as the target, send the message only to them
if clients[client].get('data').decode('utf-8') == messageTargetUsername:
client.send(messageSender['header'] + messageSender['data'] + messageList['header'] + messageList['data'])
每当我尝试sendMessageTo方法时,但当我使用SendToAllClients方法时,我都会收到错误"TypeError:'socket'对象不可下标",你知道为什么会发生这种情况吗?
似乎给出错误的行是:
client.send(messageSender['header'] + messageSender['data'] + messageList['header'] + messageList['data'])
但是sendToAllClients上几乎相同的行有效吗??
不知道clients
是什么,很难回答。不过我会尝试一件事。
代替
if clients[client].get('data').decode('utf-8') == messageTargetUsername:
尝试
if client.get('data').decode('utf-8') == messageTargetUsername:
我假设这里clients[client]
没有方法get
,因此您得到了错误。试着看看这是否有效。