@angernicky

Как отправлять большие данные через Socket на python?

Здравствуйте. Пишу скрипт сервера который, принимает данные от клиента и возникла такая проблема, что когда клиент передает большой обьем данных, превышающий размер буфера=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)
  • Вопрос задан
  • 380 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы