Python:获取"'套接字'对象不可下标"


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,因此您得到了错误。试着看看这是否有效。

最新更新