Несколько дней бьюсь над этим кодом. Если очень просто клиент и сервер отправляют пак из двух сообщений, первое - длина сообщения. Второе - само сообщение. Но сервер упорно вместо строки букв, дает мне строку пробелов.
Метод .send клиента:
(я отправляю строку "Hello! Bust")
def send(msg: str, client: socket.socket):
msg_length = len(msg)
send_length = str(msg_length).encode(FORMAT)
send_length += b' ' * (HEADER - len(send_length)) # Заполнение пробелами
log(f"Отправляем длину: {send_length.decode(FORMAT)}")
client.send(send_length)
client.send(msg.encode(FORMAT))
log(f"Отправляем сообщение: {msg}")
Метод .receive() сервера
def receive(conn: socket.socket):
# Получение длины сообщения
msg_length = conn.recv(HEADER).decode(FORMAT).strip() # Убираем пробелы
if msg_length.isdigit():
msg_length = int(msg_length)
log(f"Полученная длина: {msg_length}")
msg = conn.recv(msg_length).decode(FORMAT)
log(f"Полученное сообщение: {msg}")
return msg
else:
return None
В консоли я вижу, что сервер четко уловил длину сообщения: 11 байт. И соотвественно принимает сообщение длиной 11 байт. Но вместо букв я вижу просто 11 пробелов. В чем может быть проблема?