Не могу понять почему как сделать такой 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)