Первая ошибка: вы добавляете BEGIN
и ENDED
к image
и сохраняете его.Кроме того, если вы добавите data
к imag
и запишите его в каждом цикле, то вы будете много раз сохранять одну и ту же часть изображения в файле.
with open("image.jpg", "wb") as fw:
print("Receiving..")
while True:
data = c.recv(1024)
if data == b'BEGIN':
continue
elif data == b'ENDED':
break
else:
fw.write(data)
fw.close()
print("Received..")
Вторая ошибка: у вас неверные отступы в клиентеи вы запускаете send('ENDED')
после первого send(data)
with open('/home/pi/Desktop/image_to_send.jpg', 'rb') as fs:
self.soc.send(b'BEGIN')
while True:
data = fs.read(1024)
self.soc.send(data)
if not data:
break
self.soc.send(b'ENDED')
fs.close()
Я бы отправил его без BEGIN
и ENDED
.Когда клиент закрывает соединение, сервер должен получить ноль data
или EOF
- чтобы вы могли проверить if not data:
на сервере и закрыть файл.