![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
cmL |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.3.2009 Репутация: нет Всего: нет |
Написал приложение для передачи фалов по сети с помощью TServerSocket и TClientSocket. Всё работает, но есть одно НО... Во время передачи среднего размера фалов (5 и более Mb) клиент зависает до окончания передачи. Я уверен, что это из-за того, что для передачи и принятия файла в оперативной памяти выделяется размер = размеру передаваемого файла. Помогите решить проблему, либо подскажите другой надёжный способ передачи.
P.S. Написал я это приложение на основе этой статьи. |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
1. Используй не TMemoryStream, а TFileStream.
2. Очень смущает
В реальных условиях не будет такого, чтобы 5 и более мегабайт отправились сразу за 1 send. Значит, нужно будет использовать "досылку" данных в сокет, когда он передаст первую часть данных. А в примере не используется событие OnClientWrite (буфер сокета свободен и в него можно добавить данные). 2. Статья не освещает некоторые вопросы. Прочитай эту статью, по крайней мере раздел "Почему несколько блоков при передаче могут обьединяться в один" - обязательно. |
|||
|
||||
cmL |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.3.2009 Репутация: нет Всего: нет |
kami, спасибо большое советы.
Это сообщение отредактировал(а) cmL - 28.3.2009, 20:29 |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
Статья не бред, а вот насчет кода - соглашусь, есть такое. Но с другой стороны это заставляет подумать головой, чтобы заставить всё хозяйство работать ![]() Самое главное, что оттуда можно подчерпнуть (ну, по крайней мере я подчерпнул ![]() Это очень хорошо, что всего с пол-часа, большая удача для изучения чужого кода ![]() |
|||
|
||||
cmL |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.3.2009 Репутация: нет Всего: нет |
Да всё в порядке
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |