![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Ярик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Ув. мастера делфи, гости и т.д.
У меня такой вопрос... Я хочу сделать программу типа Net Meetings. Суть в том, что с экрана сервера локальной сети изображение передовальсь на экраны других компов в сети... Мне нужен только ПРИНЦИП действия. У меня получалось вот это: Сервер делал скриншот с дорисовкой курсора шесть раз в секунду, после чего он был сохранен в папку с открытым доступом. По такому же принципу я успешно сделал и сетевой чат но не об этом речь. Компьютеры локальной сети шесть раз в секунду брали с той папки скриншот и показывали у себя на экране. Я уж было возрадовался, но вознокла проблема. Не хватает синхронизации. Может возникнуть такая ситуация, что сервер сделал скриншот, но не успел ПОЛНОСТЬЮ сохранить его, а другой комп уже пытается скопировать этот скриншот. И тогда скорость снижается с 6 кадров в сек на 2 кадров в сек. Кроме этого вылазит гора сообщений о какой-то ошибке. Очевидно о той что якобы, скрин не скопирован т.к. сервер сделал скриншот, но не успел ПОЛНОСТЬЮ сохранить его, а другой комп уже пытается скопировать этот скриншот. Сообщения можно игнорировать но это не выход. Вторая проблема: после работы программы в течении примерно 10 минут вылазит сббощение что не хватает оперативной памяти и прога закрывается. Нужна помощь. Подскажите, помогите (возможно подсказка идеи синхронизации), возможно даже предоставить пример. |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
еа сервере поднимай UDP клиента, и широковещательными пакетами рассылай скриншоты; на клиентах ставь UDP сервер который будет слушать определенный порт и соодветственно получать скриншоты. Такой подход минимизирует трафик, полная синхронизация и независимость от загрузки конкретных машин.
Добавлено @ 11:01 а твой подход мягко говоря "странный" ![]() Добавлено @ 11:03
видать память не освобождаеш. скорее всего при снятии скринов -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Ярик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Нет... Памяти нехватает на тех компах, которые принимают скрины.
Знаю, но ничего лучше не придумал... Вот и прошу подсказать... Если бы я зна ЧТО ЭТО ![]() ![]() Это сообщение отредактировал(а) Ярик - 11.8.2006, 12:54 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
А как ты собираешься писать сетевое приложение "типа нетмитинга", если не имеешь представления о работе сети?
Боюсь, курс лекций о сетевом программировании зачитывать будет лениво... |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
значит на клиентской стороне не освобождаеш. Суть то не меняется. мона. UDP - протокол передачи датаграмм. он не требует установления соединения как такового (в отличие от TCP), что позволяет транслировать потоковые данные (музыка, видео, телеметрия). И совершенно не важно когда "клиент" подключится к каналу, он всегда будет получать только текущую информацию (в данном случае скриншоты). Для реализации сего "чуда" вполне подойдет как TUDPSocket (стандартный) так и TidUDPServer (Indy). Учитывая твой уровень я бы остановился на Indy. Широковещательная рассылка - Boardcast это когда отправляемые тобой данные попадают на все доступные интерфейсы сети (до ближайшего маршрутизарора). Это кончно не самый оптимальный способ (например для передачи потокового видео используют специальные "подписные" каналы для уменьшения нагрузки на сеть), но с приделах малой локальной сети аж зашушит ![]() Добавлено @ 13:35 Snowy, если человек думать умеет то ему можно только направление дать, а далее он сам разберется, а если не умеет то никакой курс лекций не поможет. Такова объективная реальность. Все мы чегото не знаем. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
FF90h |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 1.7.2006 Где: Планета Земля Репутация: нет Всего: 1 |
drkot широковещательные пакеты отсылать это не дело !
![]() ![]() Это сообщение отредактировал(а) FF90h - 11.8.2006, 13:44 |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
это как сказать. реализация по клиент сервер раза в два усложнится; информацию нухно рассылать на много компьютеров тоесть трафик увеличится в N раз (где N число компов клиентов) если передавать в незжатом виде то 1024*768*(32/8)*6=18Mb/sec тоесть стомегабитка ляжет даже при одном соединении ![]() Если же весли себя скромнее и применить Gif or PNG кодирование то 100кб*6=600кб/сек вполне приемлемый трафик даже для 10. Если же использовать клиент сервер трафик умножится на число компов (к примеру 10), тогда 100мегабитка начнет захлебываться ибо при наличии хотябы обного свича с 10 активными портами (подключенными и имеющими минимальный служебный трафик) скорость передачи между любыми бвымя портами не превысит 80Мбит/сек, а при незначительной активности клиентского трафика на остальных портах (10-20кбит) максимальная скорость упадет до 50-60Мбит. Поэтому широковещательная рассылка имхо самый нормальный выход. Добавлено @ 14:01
8000*(16/2)=16кб/сек. Ну и какие тут проблемы с трафиком (сколько нужно машин чтоб забить канал?) Проблемы с наложением это уже совсем другое, это уже к медиа относится и к умению пользоваться селекторной связью. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
FF90h |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 1.7.2006 Где: Планета Земля Репутация: нет Всего: 1 |
Все же по обстоятельствам нужно смотреть может у него админы злые ![]() |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
а так понимаю это чтото типа компьютерного класса: один показывает, а остальные смотрят и учатся.
кста идея заинтересовала. и если Ярик, не против можно объдиниль усилия. это да. но на каждого админа найдется еще более злой директор ![]() -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Ярик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Не против... Но мне это просто на МАН надо.... Готовлюсь Пока я сделал 2 проги и вот что у мя было: 1) Программа для сервера: • Открывается savedialog для пути сохранения • Делает 6 раз в сек скриншот (у них одинак. имена, они взаимозаменяются) • Дорисовывает курсор машки на скриншот • Сохраняет его 6 раз в сек в папку из 1го пункта. 2) Программа для компа: • Открывается opendialog и находим скриншот на серв. • На форме удаляется Caption, форма разворачивается на весь экран • На форме Image, 6 раз в сек загружает картинку. (Либо ее рисовать на Canvas) Вот так все примитивно... Это сообщение отредактировал(а) Ярик - 11.8.2006, 15:17 |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Ярик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Кто чего добился??
|
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
Сори. пока времени нет свои сроки прижимают.
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |