Некорректно передаться данные с сервера на клиент, в чём причина?

Я хочу передать файл с сервера на клиент. но часть байтов не передаться

на сервере функция которая передает
async def install(self, user=None):
        if not user:
            return

        file = open(self.path_seving+"\\"+"starting.exe", "rb")
        await self.main_loop.sock_sendfile(user, file, offset=0)


на клиенте функция которая принимает
def install():
    data = client.recv(1024)
    file = open("starting.exe", "wb")
    file.write(data)
    while True:
        data = client.recv(1024)
        if not data: break
        file.write(data)
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
ну для начала стоит закрыть файл... лучше всего - через оператор with.
def install():
    with open("starting.exe", "wb") as file:
        data = client.recv(1024)
        while data:
            file.write(data)
            data = client.recv(1024)

Далее, как клиент поймёт что всё было передано? По закрытию соединения?
Так тогда сервер должен корректно закрыть это соединение и дать клиенту понять, что больше данных не будет!
user.shutdown(socket.SHUT_RDWR)
user.close()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы