![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.10.2011
Сообщений: 3
|
![]()
Добрый день! Ребят прошу помощи у вас, уже почти неделю бьюсь над этой проблемой, понимаю что подобных тем полно, но перепробовал кучу вариантов и проблема так и не решена!
Итак имеется клиент-серверное приложение, использовал стандартные компоненты TServerSocket, TClientSocket для работы с сокетами(сокеты использую в неблокирующем режиме); использую Delphi XE. Организовал обмен текстовыми сообщениями между клиентом и сервером и все было прекрасно, но тут встала проблема - мне необходимо передавать с клиента на сервер скрин экрана, перечитав кучу всего, и гугля бесконечно написал вот что: Итак клиентская часть: Код:
Код:
"Bitmap image is not valid".. Смысл ошибки понимаю, видно пакеты режутся на части и искажаются при передаче! И собственно вопрос как можно корректно передавать данные в таком случае? PS. Размер потока данных со скрином составляет порядка нескольких мегабайт(4-8). Последний раз редактировалось Stepan_AVR; 17.10.2011 в 17:57. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
открываете картинку TFileStream и режете на куски и кусками передаёте воттакой рекорд:
Код:
На сервере, ловите, создаёте файл стрим, и пишете буфер в указанный офсет. |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 17.10.2011
Сообщений: 3
|
![]() Цитата:
Код сервера: Код:
Код:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Думаете, разумно передовать по 2048 байт(2 кб)?
Ваша логика кода, меня просто убивает... Код:
Думаю разумно забить на передачу текста, и использовать только буфер. Ставя в начало какой-то знак(Идентификатор), того что после него... Код:
Это как вариант.. А память теряете потому, что насоздавали MemorySteam'ов ...но нигде нет ни слова об MS.FREE; ни в клиенте ни в сервере... Последний раз редактировалось Человек_Борща; 20.10.2011 в 23:04. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 17.10.2011
Сообщений: 3
|
![]()
Короче после долгих экспериментов изменил код и все даже заработало! Но только на локальной машине! При передачи данных по сети все равно вы летают ошибки!
![]() Код сервера: Код клиента: Код:
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача переменной через сокет | Yura_S | Общие вопросы Delphi | 3 | 25.03.2010 09:53 |
Передавать файл через сокет частями | NieL | Работа с сетью в Delphi | 0 | 08.12.2009 16:42 |
Данные через сокет по tcp/ip протоколу | a.haener | JavaScript, Ajax | 1 | 04.07.2009 08:14 |
Не работает отправка файла через сокет | SARGE | Работа с сетью в Delphi | 0 | 29.01.2009 13:29 |
Передача файла через сокет Delphi | Unconnected | Работа с сетью в Delphi | 4 | 23.12.2008 16:16 |