![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
|
![]()
Передача текста (клиент->сервер) проходит отлично.
Пытаюсь перебросить картинку(TMemoryStream). Перебрасываю с TServerSocket на TClientSocket. Так отправляю: Код:
Код:
Программа-сервер просто вылетает. Как с этим бороться? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Поток не нужно уничтожать. Он будет уничтожен сокетом после отправки.
serversocket1.Socket.Connections[0].SendStream(fs); //fs.Destroy; //По-моему уже был такой вопрос. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
|
![]()
Проблема не решена. Та же самая ошибка
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
По-моему проблема с getMem и pChar.
Лучше pointer и вот так: L := socket.ReceiveBuf(buf^, L); fs.WriteBuffer(buf^, L); На всякий случай весь проект: Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
|
![]()
Спасибо, проблема решена.
Но теперь появилась другая проблема-- ошибка Bitmap image is not valid. Есть варианты решения? |
![]() |
![]() |
![]() |
#6 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]() Цитата:
fs.WriteBuffer(buf^, L); Проверьте еще раз. Код, который я привел, рабочий. --------------------------- Есть еще один момент. Я использовал для теста BitMap 406 байт. Если поток большой, сервер запросто может разбить его на несколько пакетов. Проверьте количество вызовов OnRead (закоментируйте преобразование в BitMap и повесьте счетчик.). По-хорошему нужно бы сначала принять размер потока, потом все части и только когда поток принят полностью, преобразовывать его в BitMap. Последний раз редактировалось alexBlack; 10.08.2008 в 12:31. |
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
|
![]()
Кажется, я понял где "ошибка".
Ваш код полностью рабочий, но я не учёл 1 момент--картинка, похоже, передаётся не целиком, а по частям.(первый раз работаю с сокетами)Что мне и непонятно--видел несколько исходников, в которых это никак не предусматривалось--и всё работало. Пересылка идёт по 8,2 кб. Как с этим бороться? Последний раз редактировалось NikLik; 10.08.2008 в 14:06. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 25.03.2007
Сообщений: 166
|
![]()
А тебе именно TServer\ClientSocket надо? Я передавал картинку через Indy компоненты, там это проще.
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
|
![]()
Всем ещё раз спасибо, разобрался.
Выкладываю то, что получилось-- небольшая тулза(клиент-сервер)(считай--бэкдор), способная выполнять простейшие команды+ давать скриншот. |
![]() |
![]() |
![]() |
#10 |
Регистрация: 04.06.2009
Сообщений: 6
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Serversocket,clientsocket | prizrak1390 | Работа с сетью в Delphi | 10 | 21.04.2009 16:04 |
Работа с ServerSocket и ClientSocket | AlDelta | Работа с сетью в Delphi | 12 | 28.09.2008 11:18 |
Компонент ClientSocket | Altera | Компоненты Delphi | 2 | 03.04.2008 15:37 |
Server & ClientSocket как без ip | delphin100 | Работа с сетью в Delphi | 20 | 16.01.2008 17:12 |
Client Server Socket передача информации с помощью потока | One.Love | Работа с сетью в Delphi | 4 | 15.01.2008 19:06 |