У меня есть простой сервер на моем ПК с Windows, написанный на питоне, который читает файлы из каталога, а затем отправляет файл клиенту через TCP.Сервер Python отправляет усеченные изображения по TCP
Файлы, такие как HTML и Javascript, получены клиентом правильно (отправлено и оригинальное совпадение файлов).
Проблема заключается в том, что данные изображения усекаются.
Как ни странно, разные изображения усекаются разной длины, но это согласовано для каждого изображения.
Например, конкретный 1 МБ JPG всегда принимается как 95 байтов. Другое изображение, которое должно быть 7 КБ, принимается как 120 байт.
Открытие файлов с укороченным изображением в блокноте ++, данные, которые :, верны. (Единственная проблема в том, что файл заканчивается слишком рано).
Я не вижу шаблона, где файлы заканчиваются. Символы/байты непосредственно перед и после усечения различаются для каждого изображения.
Я пробовал три разных способа чтения сервером файлов, но все они имеют одинаковый результат.
Вот отрывок из чтения и отправки файлов:
print ("Cache size=" + str(os.stat(filename).st_size))
#1st attempt, using readlines
fileobj = open(filename, "r")
cacheBuffer = fileobj.readlines()
for i in range(0, len(cacheBuffer)):
tcpCliSock.send(cacheBuffer[i])
#2nd attempt, using line, same result
with open(filename) as f:
for line in f:
tcpCliSock.send(f)
#3rd attempt, using f.read(), same result
with open(filename) as f:
tcpCliSock.send(f.read())
Скрипт выводит на консоль размер файла read и количество байтов matche s оригинальное изображение. Таким образом, это доказывает, что проблема заключается в отправке, не так ли?
Если проблема связана с отправкой, что я могу изменить для правильного отображения всего изображения?
Подтвержденная работа! – Bort
Есть ли причина НЕ ВСЕГДА использовать двоичный режим? Это создаст проблему для любого текста? – Bort