Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с передачей картинки плиз!!! 
V
    Опции темы
elestrago
  Дата 19.2.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 23.8.2007
Где: runet

Репутация: 1
Всего: 3



парни вот код:
сервер

Код

if copy(prihod,1,6) = 'screen' then ---- это команда типа если пришло такое то выполнить это
begin
.
. сдесь делаю картинку
.
try
  str.LoadFromFile('1.bmp');
  str.Position:=0;
    serversocket1.Socket.Connections[0].SendText('screen' + IntToStr(str.Size) + #0); ----- а вот здесь я отправляю ответ клиенту с командой 'screen'
    serversocket1.Socket.Connections[0].SendStream(str);
 except
str.Free;
end;
end;


Клиент

Код

 S1:=Socket.ReceiveText;
 if copy(S1,1,6) = 'screen' then --- вот здесь я проверяю если пришла такая команда то выпонить следующее....
begin
delete(S1,1,6);
if not Reciving then
begin
SetLength(sl, StrLen(PChar(S1))+1);
StrLCopy(@sl[1], PChar(S1), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(S1, 1, Length(sl));
Reciving:= true;
end;
try
Data.write(S1[1], length(S1));
if Data.Size = DataSize then
begin
Data.Position:= 0;
Image1.Picture.Bitmap.LoadFromStream(Data);
Data.Free;
Reciving:= false;
end;
except
Data.Free;
end;
end;



но этот код неработает.... незнаю почему вот к примеру если из кода сервера вырезать 'screen' + а из клиента  if copy(S1,1,6) = 'screen' then 
begin
delete(S1,1,6); то все сразу заработает... 

Это сообщение отредактировал(а) elestrago - 19.2.2008, 17:01
--------------------
PM MAIL ICQ   Вверх
vovksextra
Дата 19.2.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



В сервере:

SendText('screen' + IntToStr(str.Size) + #0);
SendStream(str)


У клиента всего лишь

.ReceiveText;

ReceiveText only works in response to a read notification to a non-blocking windows socket. Blocking sockets must use a TWinSocketStream for reading. The TWinSocketStream object waits for the remote socket to be ready before transferring information.

или что там у тебя еще?


попробуй  вызвать .ReceiveBuf


PM MAIL   Вверх
elestrago
Дата 19.2.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 23.8.2007
Где: runet

Репутация: 1
Всего: 3



if copy(S1,1,6) = 'screen' then 
begin
delete(S1,1,6); --- это команда по которой клиент должен будет начать прием картинки!!!

до этой команды есть еще другие по типо это которые делают определенные действия по команде!
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.