Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 19:15   #1
Pavel_S
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 14
По умолчанию Передача скриншотово по UDP

Подскажите пожалуйста, как передать и собрать обратно скриншот (TCP сразу говорю не подходит, передача по локальной сети с использованием мультикаста).
Есть скаченный пример передачи файла. Он написанн на одной форме и есть одна глобальная переменная get_accept, без которой передача останавливается на первом пакете.
Пример:
Вложения
Тип файла: rar UDP.rar (196.6 Кб, 36 просмотров)
Pavel_S вне форума Ответить с цитированием
Старый 10.02.2011, 20:13   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Подскажите пожалуйста, как передать и собрать обратно скриншот

Разбить его на 1000 маленьких скриншотиков и передать.
Если будете соблюдать предел по пропускной способности, в локалке ни один пакет не потеряется. А если и потеряется, нужно сделать так, чтобы это сильно на качество общего скриншота не сказалось.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 10.02.2011, 20:31   #3
Pavel_S
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 14
По умолчанию

А можно пример, разбития и сборки пожалуйста на UDP?
Я вам пример уже скинул где разбитие на части и сборка реализована (общего плана ответы не интерисуют):

вот она процедура разбития
Цитата:
procedure SendProcedure(FStream: TFileStream; Castserver1: TIdIPMCastServer; StatusLabel:TLabel);
var
i,j,count: integer;
buf : array[1..40000] of Char;
begin
i:=round(FStream.Size/40000);
if (i*40000<FStream.Size) then i:=i+1;
CastServer1.Send('count_buf:'+IntTo Str(i)+'#'); //несоответствие
Application.ProcessMessages;
for j:=1 to i do
begin
if i=j then
count:=FStream.Read(buf,FStream.Siz e-((i-1)*40000))
else count:=FStream.Read(buf,length(buf) );
CastServer1.SendBuffer(buf,count);
StatusLabel.Caption:='передача пакета № '+IntToStr(j);
while get_accept=false do Application.ProcessMessages;
get_accept:=false;
end;
end;
//вот она процедура чтения и сборки на клиенте
Цитата:
procedure TMainForm.CastClientIPMCastRead(Sen der: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
str_buf : array[1..20] of Char;
begin
// если первый раз, то считываем данные об колличестве пакетов, которые нужно будет принять
// создаем поток для файла
if first_=true then
begin
AData.Read(str_buf,length(str_buf)) ;
if copy(str_buf,1,10)='count_buf:' then
get_buffers:=StrToInt(copy(str_buf, 11,pos('#',str_buf)-11));
if SaveDialog.Execute then
begin
first_:=false;
ServerStream:=TFileStream.Create(Sa veDialog.FileName,fmCreate);
end;
end else
begin
get_accept:=true;
get_buf_num:=get_buf_num+1;
ServerStream.Position:=ServerStream .Size;
ServerStream.CopyFrom(AData,AData.S ize);
if get_buffers=get_buf_num then
begin
ShowMessage('Все, принято!');
ServerStream.Free;
first_:=true; //перевод в начало
get_accept:=false;
get_buf_num:=0; //обнуление счётчика пакетов
end;
end;
end;
Проблема в том что код не мой, и мне лично не понятно почему без переменной get_accept которая глобальная используется, в данном примере и клиентом и сервером работа не идёт, при попытки создания отдельных модулей, поясните пожалуйста, для чего она и как переделать данную прогу
Pavel_S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прочитать UDP AmonRa Работа с сетью в Delphi 0 22.11.2010 06:32
Передача списка и combobox'а через indy udp xatrix Общие вопросы Delphi 2 18.07.2010 16:14
Передача потока по UDP. Clos Работа с сетью в Delphi 7 21.06.2010 16:37
Передача файлов по UDP GAGARIN-NEW Работа с сетью в Delphi 3 15.11.2007 22:45