Как отправить несколько файлов через сокет TCP / IP с Python? - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу создать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...