Я работаю над программой, которая создает резервные копии таких файлов, как OneDrive или iCloud.
У меня все работает, но когда я отправляю файл через сокеты, он просто зависает, пока я не закрываю соединение.
Вот пример кода:
Клиент:
def UpdateFileOnServer(file):
print("[!] Uploading file to server: ",file)
with open(clientFolder+file,"rb") as f:
s.sendall(file.encode())
file = f.read()
s.sendall(file)
print("[!] File has been sent.")
Сервер:
with open(fileLocation,"wb") as f:
print("[!] File recieved! Downloading...")
while True:
data = conn.recv(4096)
if not data:f.close();break
f.write(data)
Итак, еще раз резюмируем:
- Клиент отправляет файл и говорит, что он был отправлен.
- Сервер получает около 90% файла и зависает на неопределенное время, пока я не нажму CTRL+C на клиенте
- Когда я это делаю, сервер завершает передачу файла, и файл успешно получен.
Насколько велик файл?
Файл 15кб
Какой именно размер?
Хорошо, поэтому мне нужно сначала отправить фактический размер файла, а затем получить файл, пока я не нажму на отметку размера, затем я прерываюсь и жду новых. Правильно ли я понял?
Я запустил ваш код, и он отлично работает на моей машине со случайно сгенерированным файлом размером 15 КБ.
Это все еще не работает правильно на моей машине. Я попытаюсь создать отдельные файлы и запустить их, чтобы посмотреть, не напутал ли я что-то в интеграции.
Возможно, вам будет лучше с ftp-сервером
Спасибо, попробую и отпишусь, если получится! Спасибо вам всем.