Как передавать любые файлы, используя протокол TCP\IP и python serversocket

Всех приветствую!

Возникла необходимость разработать скрипт на python (framework socketserver), который при посредством протокола TCP\IP сможет передавать любые файлы от клиентов на сервер.

Обычными сообщениями клиент-сервер обменивается. С этим проблем нет.

Вопрос заключается в правильной передачи файлов. Ниже приведены исходные коды скриптов сервера и клиента.

serverforever.py

import socketserver

class ThreadingTCPserver(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

class EchoTCPHandler(socketserver.BaseRequestHandler):

def handle(self):
    data = self.request.recv(1024).strip()
    print('Address: {}'.format(self.client_address[0]))
    self.request.sendall(data)

    f = open('take_file_pulse.txt', 'wb')
    f.write(data)

if __name__ == '__main__':
    with ThreadingTCPserver(('', 8888), EchoTCPHandler) as server:
        server.serve_forever()

client.py

from socket import * 
import os 

tcpClientSock = socket(AF_INET, SOCK_STREAM)

HOST = '127.0.0.1'
PORT = 8888

ADDR = (HOST, PORT)
BUFSIZE = 1024

tcpClientSock.connect(ADDR)

f = open('pulse.txt', 'rb')
f_data = f.read(BUFSIZE)
f.close()

tcpClientSock.send(f_data)

Такое прокатывает с обычными текстовыми файлами, картинкой. При попытке переслать видео - создается файл с определенным названием и расширением размером в 1 КВ и всё. На стороне клиентского скрипта в консоли выводит сообщение, что сервер разорвал соединение. Была попытка считывать через While, но это ничего не поменяло.

Подскажите пожалуйста, как можно сделать передачу абсолютно любых файлов данным способом? Заранее благодарен!


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