Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.03.2009, 14:16
dixter dixter вне форума
Прохожий
 
Регистрация: 28.01.2009
Сообщения: 22
Репутация: 10
По умолчанию удаленное администрирование

Здравствуйте
написал простейший пример просмотра удаленного экрана, но работает
он почему то слишком медленно порядка 3-4 кадра в секунду
Использовал indy 10
может у этих компонентов как нибудь скорость передачи настраивается?
Кстати делаю копию экрана меньше например 100*100 - работает гораздо быстрее

код сервера:
Код:
procedure TMForm.idTCPServer1Execute(AContext: TIdContext);
 var az:string;
w,h,raz:integer;
stream:tmemorystream;
begin
  az:=Acontext.Connection.IOHandler.ReadLn;
  if az='Screen' then
  begin
      stream:=tmemorystream.Create;
      SImg:=TJpegImage.Create;
      BImg:=TBitmap.Create;
      w:=screen.Width;
      h:=screen.Height;
      bimg.Width:=w;
      bimg.Height:=h;
      bitblt(bimg.Canvas.Handle,0,0,w,h,getdc(0),0,0,srccopy);
      SImg.Assign(BImg);
      SImg.CompressionQuality:=70;
      SImg.Compress;
      simg.SaveToStream(stream);
      raz:=stream.Size;
      c.Connection.IOHandler.Write(raz);
      c.Connection.IOHandler.Write(stream);
      Bimg.free;
      stream.free;
      Simg.free;
end;

код клиента:
Код:
procedure form1.Button1Click(Sender: TObject);
begin
var
w,h,r:integer;
j:Tjpegimage;
b:tbitmap;
stream:tmemorystream;
begin
  stream:=tmemorystream.Create;
  j:=Tjpegimage.Create;
  b:=tbitmap.Create;
  while 1=1 do
  begin
  try
  idTCPClient1.connection.IOHandler.WriteLn('Screen');
  r:=TCPClt[id].Clt.IOHandler.ReadInteger;
  stream.Position:=0;
  sleep(10);
  idTCPClient1.connection.IOHandler.ReadStream(stream,r);
  stream.Position:=0;
  j.LoadFromStream(stream);
  b.Assign(j);
  form1.image1.Picture.Bitmap:=b;
  stream.Clear;
  b.FreeImage;
 end;
испытывал и на своем компе и через сеть одно и тоже
radmin же например как то работает быстренько
помогите разобраться если знаете в чем проблема
может на WinSock для этого нужно переделать? низнай будет быстрее работать
__________________
Хочу все знать! Проблема в том что не хочу учиться
Ответить с цитированием
  #2  
Старый 17.03.2009, 14:49
Аватар для SHKIP3R
SHKIP3R SHKIP3R вне форума
Новичок
 
Регистрация: 24.04.2007
Адрес: Челябинск
Сообщения: 69
Репутация: -1631
По умолчанию

для начала попробуй скриншоты конвертировать из BMP в JPG формат и тогда размер каждого кадра сократится с 3,5 метров до 300 килобайт...
Ответить с цитированием
  #3  
Старый 17.03.2009, 18:37
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
По умолчанию

Цитата:
Сообщение от SHKIP3R
для начала попробуй скриншоты конвертировать из BMP в JPG формат и тогда размер каждого кадра сократится с 3,5 метров до 300 килобайт...

Ты хоть полностью удосужился предыдущий пост прочитать ?

2 dixter - сам как-то писал подобное, но большей скорости чем у тебя так и не добился, даже используя jpeg. Похоже что используя стандартные TCPServer и TCPClient этого не сделать.
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #4  
Старый 17.03.2009, 19:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Можно. У меня приятель писал такую штуку. Так вот в винде можно как-то зарегистрироваться, что она начинает присылать извещения об изменении на экране. При этом в этих извещениях указывает регион (размеры и позицию) области изменения. Так вот - можно слать не весь экран, а только изменения. Как сделать - меня не спрашивай, я в тонкости этого не вдавался, просто знаю, что такое есть.

ЗЫ. JPEG в дельфях не самый быстрый. Попробуй поискать другую библиотеку для сжатия изображений, м.б. даже в другой формат (я бы порекомендовал PNG). На этом тоже теряется изрядно времени. еще совет - слать не 24bit картнки, а "ужимать" их хотя бы до 256 цветов. Тоже поможет выиграть немного.
Ответить с цитированием
  #5  
Старый 20.03.2009, 13:03
Аватар для SHKIP3R
SHKIP3R SHKIP3R вне форума
Новичок
 
Регистрация: 24.04.2007
Адрес: Челябинск
Сообщения: 69
Репутация: -1631
По умолчанию

когда то давненько тоже пробовал написать подобную программку, как и большинство забил...
В попытке помочь, могу предложить посмотреть: http://gribuser.ru/freeware/nethack/index.shtml
исходник оч. старый и ни чего нового там нет, но тем кто только решил начать с программ удаленного администрирования, я думаю пойдет...
Цитата:
Сообщение от Rokuell
Ты хоть полностью удосужился предыдущий пост прочитать ?
в кратце... не вдаваясь в подробности, а что, ты считаешь я написал бред?

P.S. или вот еще: http://www.kami-soft.nm.ru/Sources/Lan_Control2.zip

Последний раз редактировалось SHKIP3R, 20.03.2009 в 13:17.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025