файл не поступает должным образом - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь отправить файл с клиента на сервер. Но статьи в моем файле не доходят до сервера. Как я могу решить эту проблему?

на стороне клиента:

            f= open(filename,'rb')
            l = f.read(buf)
            while (l):
                client.sendto(l,ADDR)
                print('Sending\n ',repr(l))
                l = f.read(buf)
                f.close()
                print('Completed')
                client.close()

Код сервера:

        with open('recv.txt', 'wb') as f:
            while True:
                print('getting file...')
                pdata,addr = server.recvfrom(buf)
                print('data=%s', (pdata))
                if not pdata:
                    break
                # write data to a file
                f.write(pdata)

                f.close()
                print('Completed')
                server.close()
                print('Connection closed')

1 Ответ

0 голосов
/ 28 мая 2020

В комментариях уже есть объяснение - у вас неправильные отступы.

Вы должны закрыть файл после выхода while l oop

f = open(filename, 'rb')
l = f.read(buf)

while l:
    client.sendto(l, ADDR)
    print('Sending\n', repr(l))
    l = f.read(buf)

# --- after loop ---

f.close()
print('Completed')
client.close()

И когда вы используете with, тогда вам не нужно close(), потому что with будет закрыть

with open('recv.txt', 'wb') as f:
    while True:
        print('getting file...')
        pdata, addr = server.recvfrom(buf)
        print('data=', pdata)
        if not pdata:
            break
        # write data to a file
        f.write(pdata)

# --- after loop ---

#f.close() # no need it
print('Completed')
server.close()
print('Connection closed')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...