Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Помогите с передачей картинки плиз!!!


Автор: elestrago 19.2.2008, 17:00
парни вот код:
сервер

Код

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); то все сразу заработает... 

Автор: vovksextra 19.2.2008, 17:40
В сервере:

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


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

до этой команды есть еще другие по типо это которые делают определенные действия по команде!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)