Я хочу создать Tcp сокет, где будет сторона сервера и сторона клиента. На сервере будет сохранено несколько файлов. Когда клиент запрашивает эти файлы, сервер должен отправить все файлы. Проблема в том, что когда у меня есть только один файл на сервере, я могу отправить его, но если я пытаюсь отправить несколько файлов, я не могу,Во-первых, я хочу знать, как отправить клиенту описание файлов, которые должны быть отправлены сервером, чтобы создать цикл For и открыть типы этого файла на стороне клиента, например: На сервере у меня естьfilenames = ['travis.yaml', 'server.jpg'] Я хочу знать, как отправить клиенту список этих файлов, чтобы они знали, в каком формате им нужно открыть файл для записи, а также какотправить данные этих файлов. Спасибо за помощь!
код на стороне сервера
код на стороне сервера
import socket
import pickle
HOST = '192.168.3.22'
PORT = 1113
files = ['Cw.pdf', '1.jpg'] # Files which i want to send Client host
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Tcp/ip Socket
socket.bind((HOST, PORT))
socket.listen()
print("waiting for connection ...")
while (1):
conn, addr = socket.accept()
print(addr, 'Has Connected To server')
total_file = conn.send(pickle.dumps(files)) # send List of filenames
for reqFile in files:
with open(reqFile, 'rb') as file_to_send:
for data in file_to_send:
conn.send(data)
print("File Sent Successfuly")
conn.close()
socket.close()
код клиента
import socket
import pickle
host = '192.168.3.22' # server ip address
port = 1113 # server port
s = socket.socket() # Tcp socket
s.connect((host, port))
files = s.recv(1024) # recive all filenames
file_list = pickle.loads(files) # Create List of filenames
for j in file_list: # To iterate Each file type
with open(j, 'wb') as e:
data = s.recv(1024)
while 1:
e.write(data)
if not data:
break