|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
29.05.2008, 19:00 | #1 |
Пользователь
Регистрация: 03.04.2008
Сообщений: 50
|
передать несколько файлов indy
Подскажите как передать сразу несколько файлов, при этом количество их при каждой передаче меняется.
Я использую во этот код: Отправка: procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread); var FileToSend: String; FileSize: Cardinal; p: Pointer; begin FileToSend := 'c:\MSDOS.SYS'; // тут файл, который мы рассылаем любому попросившему. with TFileStream.Create(FileToSend, fmOpenRead) do try FileToSend := ExtractFileName(FileToSend) + #00; GetMem(p, 256); try CopyMemory(p, @FileToSend[1], Length(FileToSend)); AThread.Connection.Socket.Send(p^, 256); finally FreeMem(p); end; FileSize := Size; AThread.Connection.Socket.Send(File Size, SizeOf(FileSize)); GetMem(p, Size); try ReadBuffer(p^, Size); AThread.Connection.Socket.Send(p^, Size); finally FreeMem(p); end; finally Free; end; AThread.Connection.Disconnect; ShowMessage('Послано'); end; Получение: procedure TForm1.IdTCPClient1Connected(Sender : TObject); var FileName: PChar; FileSize: Cardinal; FS: TFileStream; begin GetMem(FileName, 256); try IdTCPClient1.ReadBuffer(FileName^, 256); IdTCPClient1.ReadBuffer(FileSize, SizeOf(FileSize)); FS := TFileStream.Create('incoming\'+File Name, fmCreate); // тут создается файл, я его положил в каталог incoming try IdTCPClient1.ReadStream(FS, FileSize); finally FS.Free; end; finally FreeMem(FileName); end; ShowMessage('Принято'); end; |
29.05.2008, 20:39 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
создать несколько подключений. внутри одной сессии вы не сможете передавать одновременно несколько файлов.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
29.05.2008, 21:49 | #3 |
Пользователь
Регистрация: 03.04.2008
Сообщений: 50
|
как это реализовать. можно потробней?
небольшой примерчик |
30.05.2008, 09:33 | #4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
один клиент может одновременно передавать информацию одному серверу.
Сервер же расценивает каждое подключение как отдельный поток. Вы можете на стороне клиента создав несколько потоков подключаться из каждого к серверу, что вам даст одновременно несколько активных сессий
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
30.05.2008, 17:43 | #5 |
Пользователь
Регистрация: 03.04.2008
Сообщений: 50
|
Как создать несколько потоков?
|
31.05.2008, 21:03 | #6 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Этот вопрос уже к сетям не имеет никакого отношения. Используем поиск по форуму потоки обсуждалось многократно.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как обновить indy 9 на indy 10 | Пилигрим | Компоненты Delphi | 16 | 30.04.2010 10:11 |
Indy 9 против Indy 10 | OrdJONY | Свободное общение | 2 | 08.11.2008 20:28 |
Передача файлов по локальной сети(Indy) | Biowulf86 | Помощь студентам | 1 | 08.05.2008 13:08 |
как загрузить в ListBox несколько текстовых файлов? | One.Love | Общие вопросы Delphi | 5 | 14.01.2008 11:54 |
Как удалить несколько файлов? | Kashp | Общие вопросы Delphi | 2 | 23.08.2007 13:38 |