![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача картинок по 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 байт) нумеруем их (смотря какой протокол). И поочерёдно отправляем. Перед отправкой посылаем серверу количество этих самых фоагментов, ну и имя самого файла.
По мере получения сервер упорядочивает эти блоки по порядковому номеру. После получения всех - сохранит их в отдельный файл, с именем, которое ему прислал клиент перед отправкой.
Вроде всё...