Я пытаюсь отправить файл с сервера клиенту с помощью udp. После запуска кода я вижу полученный файл в клиенте, но без расширения .txt. Если я напишу что-то в transferfile.txt, я получаю эту ошибку: TypeError: требуется байтовый объект, а не «кортеж». Как я могу его решить?
Код клиента:
import socket
import sys
import os
IP = input('enter the ip adress')
PORT = 5050
buf = 2048
ADDR = (IP,PORT)
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
msg = 'Hello'
client.sendto(msg.encode('UTF-8'),ADDR)
with open('received_file', 'wb') as f:
print('file opened')
while True:
print('receiving data...')
data = client.recvfrom(buf)
print('data=%s', (data))
if not data:
break
# write data to a file
f.write(data)
f.close()
print('Successfully get the file')
client.close()
print('connection closed')
Код сервера:
import socket
import sys
import os
IP = '127.0.0.1'
PORT = 5050
buf = 2048
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind((IP,PORT))
data,addr = server.recvfrom(buf)
print(str(addr) + ' says' + data.decode('UTF-8'))
filename='transferfile.txt'
f= open(filename,'rb')
l = f.read(1024)
while (l):
server.sendto(l,addr)
print('Sent ',repr(l))
l = f.read(1024)
f.close()
print('Done sending')
server.close()