Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Передача картинок по Socket у   Найти похожие ветки 

 
ArchValentin ©   (2005-01-02 07:41) [0]

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


 
XProger ©   (2005-01-02 08:54) [1]

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

Вроде всё...


 
Polevi ©   (2005-01-02 11:48) [2]

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


 
ArchValentin ©   (2005-01-02 14:13) [3]

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


 
VMcL ©   (2005-01-02 15:15) [4]

>>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, правильность демо-примера из вышеуказанной статьи.


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

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


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

VMcL ©   (02.01.05 15:15) [4]

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


 
Eraser ©   (2005-01-03 23:22) [7]

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


 
VMcL ©   (2005-01-03 23:29) [8]

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

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


 
ArchValentin ©   (2005-01-04 06:28) [9]


> Так что Indy- forever!

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


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

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


 
Eraser ©   (2005-01-05 01:32) [11]

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

пример из головы, так что извеняй, если что не так, а вообще заходи на сайт 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);

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



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
6-1105024458
Начинаюший2
2005-01-06 18:14
2005.03.13
Как програмно узнать что началось подключение к интернету?


1-1109661324
BillyJeans
2005-03-01 10:15
2005.03.13
Добавление пункта в контекстное меню системы


4-1102670879
Easter
2004-12-10 12:27
2005.03.13
Блокировка системных клавиш в 2000


4-1107077574
Максим
2005-01-30 12:32
2005.03.13
Выключение компьютера


14-1108900192
Doxygen
2005-02-20 14:49
2005.03.13
Что такое PIM?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский