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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Локальная сеть 
:(
    Опции темы
Rodman
Дата 4.11.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Tokagero, а просто сервер подписать как клиент, а клиент как сервер...

Получателем сервер служит... тебе что важно как компоненты называются...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
drkot
Дата 6.11.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Цитата(Rodman @  4.11.2006,  16:55 Найти цитируемый пост)
потока вывести в Image... и так каждую секунду

Image.Picture.LoadFromStream();


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Rodman
Дата 6.11.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



drkot, а вот к примеру в Stream можно сразу и сохранять, не сохраняя на винте???

Нет ли каких нить нюансов с этим???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 8.11.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Вернее как картинку в Stream поместить??? smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
drkot
Дата 8.11.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Создать поток типа TmemorySteam
записать в него получаемые пакеты, а потом описанное ранее действие.
запись аналогична записи в файл


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Tokagero
Дата 8.11.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Image1.picture.SaveToStream()
<Посылка стрима на др комп>
Image1.picture.LoadFromStream
PM MAIL   Вверх
ruX
Дата 8.11.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



2 Stream:
На самом деле вот что:
  • Просто содержимое скриншоте передавать безполезно. Ибо наразрешении 1280х1024х32 будет файл почти 6 метров, если локалка 100мбит, то на передачу такого уйдёт целая секунда, при расчёта что больше никто ничего не передаёт
  • Можно жать jpeg-ом, тогда размер файла при максимально качестве будет в среднем 700кило, при среднем - 300. Но на сжатие скриншота жепегом уходит время, а главное не мало ресурсов процессора. опять же на 100мегабитах можно передать уже 10-12кадров(скриншотов smile в секунду
  • К сожалению пакеты UDP не фрагментируются, а размеры иизображений очень большие, поэтому приходиться пользоваться протоколом TCP, хотя это не оправданно
Я такую штуку делал. Раньше у мя была сеть 10мбит, удавалось передавать по 3-4 кадра в секунду, приэтом процессор был жутко занят(как на машине сервере, так и у клиента) Сейчас на 100мбит передаётсья по 10 кадров в сек.

Посмотри сколько трафа кушают такие проги как radmin.. Похоже что они передают клиенту только те участки экрана, которые изменились.


Это сообщение отредактировал(а) ruX - 8.11.2006, 19:07
--------------------
Случайность - внезапно наступившая неизбежность.
PM MAIL WWW ICQ   Вверх
Rodman
Дата 8.11.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



ruX, ну мне необходи прога типа NetMeeting, RAdmin - слишком сложен для написания...

Если можешь кинь что писал...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
drkot
Дата 9.11.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Цитата(ruX @  8.11.2006,  18:39 Найти цитируемый пост)
К сожалению пакеты UDP не фрагментируются, а размеры иизображений очень большие, поэтому приходиться пользоваться протоколом TCP, хотя это не оправданно

вопервых чем плох udp? все реализуется наура. пример этого в топике.


Цитата(ruX @  8.11.2006,  18:39 Найти цитируемый пост)
Я такую штуку делал. Раньше у мя была сеть 10мбит, удавалось передавать по 3-4 кадра в секунду, приэтом процессор был жутко занят(как на машине сервере, так и у клиента) Сейчас на 100мбит передаётсья по 10 кадров в сек.

это смотря как делать (если попиксельно прорисовавать то да)

Цитата(ruX @  8.11.2006,  18:39 Найти цитируемый пост)
Похоже что они передают клиенту только те участки экрана, которые изменились.

Кто мешает такое реализовать?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Rodman
Дата 9.11.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Ну я так понимаю, что лучше через TCP делать...

Тогда:
1. Возможно ли на нем послать широковещательный запрос???
2. С ним работать почти также как и с UDP???


PM MAIL WWW Skype GTalk YIM MSN   Вверх
Tokagero
Дата 9.11.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ой... Не надо ТСР... Я уже с УДП давно мучаюсь! Еще и с ТСП столько-же промучаться??
PM MAIL   Вверх
drkot
Дата 10.11.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Цитата(Rodman @  9.11.2006,  14:16 Найти цитируемый пост)
Ну я так понимаю

Каждый протокол предназначен для решения своих задач и просто думать здесь мало.

Мне вобщем непонятно куда ползет топик.
Цитата(Tokagero @  25.10.2006,  18:07 Найти цитируемый пост)
Итак, идея в том чтоб сделать прогу, которая с определенного сервера локальной сети передавала картинки на несколько других компов в сети, причем без открывания локального доступа и т.д.

Вопрос давно решен.



--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
ruX
Дата 10.11.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Rodman @ 8.11.2006,  18:51)
Если можешь кинь что писал...

Приведу только ключевые фрагменты кода:
(для сервера)
Код

var
  bmp : TImage;
  jpg : TJPEGImage;
// Глобальные объекты которые создаются и разрушаются с запуском и выгрузкой программы.

procedure SendFullScreen(Socket: TCustomWinSocket; q : integer);
var
    ms : TStringStream;
    ScreenDC : HDC;
    ib : tInteger2bytes;
begin
    ms := TStringStream.Create('S');//(Socket, 2000);


    bmp.Width:=screen.DesktopWidth;
    bmp.Height:=screen.DesktopHeight;
    ScreenDC:=GetDC(0);

    BitBlt(bmp.Canvas.Handle, 0,0, bmp.Width, bmp.Height,ScreenDC, 0, 0, SRCCOPY );

    ReleaseDC(0, ScreenDC);

    jpg.Assign(bmp.Picture.Graphic);
    jpg.CompressionQuality := q;
    jpg.ProgressiveEncoding := True;
    jpg.Compress;
    jpg.SaveToStream(ms);


    ib.int := length(ms.DataString);

    socket.SendText(ib.chrs[1]+ib.chrs[2]+ib.chrs[3]+ms.DataString);

    ms.Destroy;
end;


(для клиента)
Код

procedure TruAndminClientWindow.cSRead(Sender: TObject; Socket: TCustomWinSocket);
var
    s : string;
    ss : TstringStream;
    classMessege  : chaR;
    len : tInteger2bytes;
    t : cardinal;
begin
    if (socket.ReceiveLength = 0) then begin
            buf := '';    exit;
    end;

    s := buf + socket.ReceiveText;

    len.chrs[1] := s[1];
    len.chrs[2] := s[2];
    len.chrs[3] := s[3];

    s := copy(s, 4, length(s));
    if len.int > length(s)-3 then begin
        buf := len.chrs[1] + len.chrs[2] + len.chrs[3] + s;
        exit;
    end;

    buf := copy(s, len.int+1, length(s));
    s := copy(s, 1, len.int);

    ss := TstringStream.Create(s);
    s := '';
    image.Picture.Graphic.LoadFromStream(ss);
    reCalcKoofs;
    ss.Destroy;
end;

Вот.. Щас и сам вижу что многие вещи тупо сделал.


Цитата
Ой... Не надо ТСР... Я уже с УДП давно мучаюсь! Еще и с ТСП столько-же промучаться??

Ну не знаю чего там мучаться.. Единственное отличие явно видимое - это то  что соединение устанавливаеться, пакеты фрагментируются, в случае ошибки пакет будет заново послан, т.е. данные не потеряются.


Цитата
Ну я так понимаю, что лучше через TCP делать...

Тогда:
1. Возможно ли на нем послать широковещательный запрос???
2. С ним работать почти также как и с UDP???

1) нед
2) начни с компонентов, посмотри пример чата который с делфи идёт

Добавлено @ 13:07 
[

Добавлено @ 13:07 
[
PM MAIL WWW ICQ   Вверх
Tokagero
Дата 10.11.2006, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ruX, а если надо сразу на несколько компов а широковещания нету тоо... С каждым связь чели устанавливать?? Или как?
TruAndminClientWindow.cSRead это в каком компоненте?? (на че жать?)
PM MAIL   Вверх
drkot
Дата 10.11.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Цитата(Tokagero @  10.11.2006,  20:31 Найти цитируемый пост)
сразу на несколько компов

для этого и есть UDP. 
Можно конечно каналы организовать, но это сложнее.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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