Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача картинок по Socket'у [D6, D7, Win95/98, WinME, WinXP]


ArchValentin ©   (2005-01-02 07:41:00) 

С наступившем всех. Подскажите pls, у мя такая проблема. Есть клиент и сервер, сязанные на Socket'ах (ClientSocket, ServerSocket), на клиенте, в image есть некий рисунок, как передать этот рисунок на сервер, и, естественно, загрузить его в image на сервере??? Извиняйте за корявое объяснение, 2-ое как никак :)))


Eraser   (2005-01-05 01:32:00) [1]

->а может исходничком подилишься, али примерчиком маленьким??? буду очень благодарен.

пример из головы, так что извеняй, если что не так, а вообще заходи на сайт http://www.indyproject.org/там заодно и последнюю версию Indy (сейчас уже 10) качни и примерчика.
Пример:

var idc: TidTCPClient;
   ms: TMemoryStream;

...
для 10 версии
var b: TBytes;// для преобразования в Tbytes из TStream используй               //TidStreamVCLWin32
idc.IOHandler.Write(b);

для 9 версии (которая встроена в delphi 7) всё гораздо проще :))

idc.WriteStream(ms);

/////////////////////////////////
НА СТОРОНЕ СЕРВЕРА ВСЁ ТОЖЕ САМОЕ, ТОЛЬКО НЕ ЗАБЫВАЙ ПРО МНОГОПОТОЧНОСТЬ!!!


ArchValentin   (2005-01-04 19:10:00) [2]

короче решил свою проблему, спасибо VMcL за функции GetScreenshotJpeи GetScreenshotBitmap, и Horrific'у за классный пример пересылки файлов по сетке...


ArchValentin   (2005-01-04 06:28:00) [3]


> Так что Indy- forever!

а может исходничком подилишься, али примерчиком маленьким??? буду очень благодарен.


VMcL   (2005-01-03 23:29:00) [4]

>> Piter ©  (02.01.05 21:49) [6]

Для того, на котором она, собственно, размещена :-)


Eraser   (2005-01-03 23:22:00) [5]

Ну прочитал статью. Мягко выражаясь, чтобы не обидеть автора, она - пример того, как не надо программировать!!! Если вы решили самостоятельно организовывать передачу данных НАСТОЯТЕЛЬНО рекомендуется использовать чистый API. А эти компоненты  (ClientSocket, ServerSocket) это породия на сокеты ))
Вообще советую использовать Indy, сейчас уже 10 версия вышла. Там передача файла или потока осуществляется в 1 строку (и приём тоже )), также обеспечивается многопоточность сервера, что необходимо почти для любого приложения, хотя её организация на API- не самая простая задача, на ClientSocket, ServerSocket- это вообще выглядет изващением!!!
Так что Indy- forever!
PS удачи ))


Piter   (2005-01-02 21:49:00) [6]

VMcL ©   (02.01.05 15:15) [4]

а для какого сайта ты статью пишешь?


Eraszer   (2005-01-02 20:08:00) [7]

Используй Indy!!!


VMcL   (2005-01-02 15:15:00) [8]

>> ArchValentin ©  (02.01.05 14:13) [3]

http://vmcl.igp.org.ua/?id=view_article&aid=2
Статья ещё не дописана до конца, но демо-пример рабочий.. вроде :-)

>> Polevi ©  (02.01.05 11:48) [2]

OFFTOPIC: Если не трудно и есть время, оцените, plz, правильность демо-примера из вышеуказанной статьи.


ArchValentin   (2005-01-02 14:13:00) [9]

...я почти всё понял, а на конкретном примере вас не затруднит... :(((


Polevi   (2005-01-02 11:48:00) [10]

TCP протокол сам позаботисся о порядке.. не надо ничего нумеровать и упорядочивать


XProger   (2005-01-02 08:54:00) [11]

Читаем файл-картинку в буфер. Делим его на некоторые чати (к примеру не более 1024 байт) нумеруем их (смотря какой протокол). И поочерёдно отправляем. Перед отправкой посылаем серверу количество этих самых фоагментов, ну и имя самого файла.
По мере получения сервер упорядочивает эти блоки по порядковому номеру. После получения всех - сохранит их в отдельный файл, с именем, которое ему прислал клиент перед отправкой.

Вроде всё...


Наверх

Титульная страница Поиск, карта сайта Написать письмо