Не могу понять почему как сделать такой recv чтобы принимал столько байтов сколько байтов в сообoении клиента python sockets

Мой сервер имеет два recv. Первый принимает длину строки, которую отправляет клиент в виде числа завернутого в байтовую строку. Второй принимает уже само сообщение о размере котором мы сообщили в первом recv его строку мы просто сделали integer и сообщение приходит и размер тоже приходит, но мне сказали что их смущает первый recv.

пожалуйста помогите мне придумать что делать с первым recv или подскажите другой способ принятия того количества байтов, который отправил мне мой клиент, чтобы сообщение было целым и могло быть любой длины !

Вот код сервера:

import socket

Server = socket.socket()
Server.bind(('localhost', 2222))
Server.listen()

def handle_client():
    conn, addr = Server.accept()
    print(f'Got connection from: {addr}')
    num_of_bytes = conn.recv(250)
    len_of_bytes = int(num_of_bytes)
    print(num_of_bytes)
    data = conn.recv(len_of_bytes)
    print(data.decode('utf-8'))
    data2 = data.upper()
    conn.send(data2)


handle_client()

А вот код клиента:

import socket

client_sock = socket.socket()
client_sock.connect(('localhost', 2222))

message = input('>>> ')
def send(msg):
    data = msg.encode('utf-8')
    length = bytes(str(len(data)), 'utf-8')
    client_sock.send(length)

    client_sock.send(data)
    print(client_sock.recv(int(length)).decode('utf-8'))

send(message)

Ответы (0 шт):