Как передавать любые файлы, используя протокол 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, но это ничего не поменяло.
Подскажите пожалуйста, как можно сделать передачу абсолютно любых файлов данным способом? Заранее благодарен!