3rd
Янв

Как сделать удалённый просмотр

Posted by Chas under Delphi

Вообшем задача такая: есть удалённый компьютер, на нём программа которая делает скриншоты экрана по таймеру, и сжимает в поток. Я, на своём компьютере, когда хочу, подключаюсь к удалённому компьютеру, введя его IP, и принимаю потоки (скриншоты) его экрана.
В свою очередь поток разворачиваеться к примеру в компоненте Image и я вижу что происходит на удалённом компьютере практически в режиме реального времени…

Человек_Борща
Снимаешь скриншот(На этом форуме, ответов валом на эту тему).
Сохраняекшь не в файл а в TStream(TFileStream)
Сжимаешь этот TStream алгоритмом Zlib или zLibEx(ищем в интернетах).
Далее полученный стим по кускам передаёшь на сервер(SendBuffer или SendBuf уже не помню).
По кускам очень просто, просто пишиль Stream в буфер из байт размером… 64*1024*1024(64 кб).

const
BUFF_SIZE = 64*1024*1024;
var
fs:TfileStream;
i:Integer;
Buff:array[0..BUFF_SIZE] of Byte;
begin

fs.Seek(0, SoFromBegining);
repeat
ZeroMemory(@Buff,SizeOf(Buff)); //занулим буфер
fs.position:=fs.Read(Buff,BUFF_SIZE); //прочитаем кусочег, запилим позицию
ClientSck.SendBuf(@Buff,...); //Отправка в общем ;)
until fs.Position = fs.size; //пока не выпилили весь стрим
{LOL!}
end;

На сервере открываешь стрим, и записывашь туда прилетаемые куски буфера.
Сохраняешь стрим в файл(если надо), а не надо, то и сразу Image.LoadFromStream вот и всО.

Мо поводу сжатия:
Сжимать можно весь стрим, ещё перед отправкой, и можно сжимать тока буффер который посылаешь, и расжимать его на сервере.

Ещё нужно учесть обрыв связи с сервером и много чего ещё….

тема на форуме

Похожие статьи