| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Передача больших файлов |
| Автор: nickelfire 11.4.2005, 09:06 | ||||
Код такой:
а сервер:
Ну там сложно понять но вообщем вопрос такой - я отправляю rtf файлы когда отправляю файлы только с текстом то есть маленькие 5KB всё работает отлично но когда я отправляю файл с картинкой 145KB то сервер который принимает этот файл и открывает его через jvxrıchedıt показывает какую то хрень. Что делать? Я предпологаю что сокет передаёт не весь покет сразу, если я прав скажите как это исправить. Ещё я нашёл в ДРКБ один пример но чёта не подходит. |
| Автор: Snowy 11.4.2005, 11:29 |
| Да уж... А какой размер принимаемого файла? Откуда сервер об этом знает? Вообще более оптимальной конструкцией было бы: - Открыть файл через TFileStream; - передать word - размер файла - стрим передать через WriteStream - на стороне сервера ReadStream; - Принятый стрим грузить в ричедит через LoadFromStream (без всяких файлов), начиная с 5-го байта, размером, указанным в первых 4-х байтах. |
| Автор: nickelfire 12.4.2005, 12:35 |
| В том-то и дело что я это пробовал не выходит. Такой пример в ДРКБ есть, одно и тоже. Прога себя так же ведёт. Ах да еще забыл сказать что после того как я передам большой файл то дальше даже маленькие файлы нормально не принимаются. |
| Автор: Snowy 12.4.2005, 12:43 | ||
| [яуоте=ницкелфире, 11.4.2005, 09:06]соцкет.РецеивеБуф(буф,стртоинт(мемо1.Линес[6])+3);[/яуоте] А причем здесь вообще мемо? И почему ты информацию спрашиваешь у него, а не у клиента?
А чего они будут приниматься, если очередь еще не считана. Сначала файл дочитать нужно. |
| Автор: nickelfire 13.4.2005, 13:34 |
| А мемо тут при том что мне удобней считывать с него. Как узнать что очередь уже считана? |
| Автор: Snowy 13.4.2005, 13:38 | ||
Если ты из нее больше ничего не можешь прочитать, то свободна Не поленись и передай перед файлом его размер. |