Ошибка в типе данных, получаемых через сокет - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть сервер и клиент, настроенный на Python, и я пытаюсь вернуть клиенту подтверждающее сообщение, но, несмотря на преобразование сообщения (на стороне сервера) в виде строки, оно печатается на клиентекак bool (через FALSE).

Отправка подтверждающего сообщения (сервер):

helomessage = str("HELO")
helomessage_send = helomessage.encode('utf-8')
helomessage_header = f"{len(helomessage_send):<{HEADER_LENGTH}}".encode('utf-8')
print("Sending: ", helomessage_send)
client_socket.send(helomessage_header + helomessage_send)

Получение подтверждающего сообщения (клиент):

hellomessage_encoded = receive_message(client_socket)
print(helomessage_encoded)
helomessage = format(helomessage_encoded['data'].decode('utf-8'))
print(helomessage)

С 'receive_message', являющимся следующей функцией на клиенте:

def receive_message(client_socket):

try:
    message_header = client_socket.recv(HEADER_LENGTH)
    if not len(message_header):
        return False
    message_length = int(message_header.decode('utf-8').strip())
    return {'header': message_header, 'data': client_socket.recv(message_length)}
except:
    return False

При выполнении этого полученное значение (которое печатается на print(helomessage_encoded)) выглядит как 'False'.

Как это исправить, чтобы клиент получил нужную строку?

1 Ответ

0 голосов
/ 07 ноября 2019

где вы сравниваете? Я привожу пример, который вы можете сравнить с чем угодно, например <=,> = <,> и более

...
    if not len(message_header) > 0:
        return False
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...