2013-11-11 3 views
0

Это мое кодирование отправки одного файла.Как отправить/получить несколько файлов через TIdTCPServer/TidTCPClient сразу?

procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread); 
begin 
    ... 
    try 
    ... 
    AFileStream := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone); 

    try 
     AThread.Connection.WriteStream(AFileStream, true, true); 
    finally 
     AFileStream.Free; 
    end; 
    except 
    AThread.Connection.WriteLn('N'); 
    end; 
    AThread.Connection.Disconnect; 
end; 

Если у меня было несколько файлов для отправки сразу, пожалуйста, предложите мне, как это сделать?

Можно ли читать сразу с помощью

procedure TForm1.ReadImageFromServer(ACmd: string); 
begin  
    with IdTCPClient1 do begin 
    ... 
    AStreamSize := ReadInteger; 
    ReadStream(AMemStream, AStreamSize, false); 
    ... 
    end; 
end; 

ответ

1

Единственный способ отправить несколько файлов одновременно через одно соединение будет писать файлы в маленькие куски, так что вы можете перемешивать их - отправить кусок 1 файла A, затем отправьте кусок 1 файла B, затем отправьте кусок 2 файла A и т. д. - где каждый фрагмент описывает, к какому файлу он принадлежит. В противном случае вам нужно отправить каждый файл по отдельному соединению.

+0

Пожалуйста, помогите мне с некоторыми примерами кодирования, я не знаю, как кодировать эту технику. :( – Artisan

+0

На самом деле файлы довольно малы всего около 3 тыс. Каждый, как насчет того, чтобы поместить их в один поток файлов, я имел в виду, что я не знаю, что это возможно или нет, особенно возможность вытащить их из потока по отдельности. – Artisan

+0

Включение всех файлов в один поток не поможет вам. Вы можете просто отправить каждый файл один за другим, что будет намного проще для кода. Почему вы хотите отправлять несколько файлов одновременно, вместо отправки 1 файл за раз? Что вы пытаетесь выполнить? –