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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Net Meetings, Создание похожей программы 
:(
    Опции темы
Ярик
Дата 11.8.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ув. мастера делфи, гости и т.д.
У меня такой вопрос... Я хочу сделать программу типа Net Meetings. Суть в том, что с экрана сервера локальной сети изображение передовальсь на экраны других компов в сети... Мне нужен только ПРИНЦИП действия. У меня получалось вот это:
Сервер делал скриншот с дорисовкой курсора шесть раз в секунду, после чего он был сохранен в папку с открытым доступом. По такому же принципу я успешно  сделал и сетевой чат но не об этом речь. Компьютеры локальной сети шесть раз в секунду брали с той папки скриншот и показывали у себя на экране. Я уж было возрадовался, но вознокла проблема. Не хватает синхронизации. Может возникнуть такая ситуация, что сервер сделал скриншот, но не успел ПОЛНОСТЬЮ сохранить его, а другой комп уже пытается скопировать этот скриншот. И тогда скорость снижается с 6 кадров в сек на 2 кадров в сек. Кроме этого вылазит гора сообщений о какой-то ошибке. Очевидно о той что якобы, скрин не скопирован т.к. сервер сделал скриншот, но не успел ПОЛНОСТЬЮ сохранить его, а другой комп уже пытается скопировать этот скриншот. Сообщения можно игнорировать но это не выход. Вторая проблема: после работы программы в течении примерно 10 минут вылазит сббощение что не хватает оперативной памяти и прога закрывается.
Нужна помощь. Подскажите, помогите (возможно подсказка идеи синхронизации), возможно даже предоставить пример.
PM MAIL   Вверх
drkot
Дата 11.8.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



еа сервере поднимай UDP клиента, и широковещательными пакетами рассылай скриншоты; на клиентах ставь UDP сервер который будет слушать определенный порт и соодветственно получать скриншоты. Такой подход минимизирует трафик, полная синхронизация и независимость от загрузки конкретных машин.

Добавлено @ 11:01 
а твой подход мягко говоря "странный"  smile

Добавлено @ 11:03 
Цитата(Ярик @  11.8.2006,  10:47 Найти цитируемый пост)
течении примерно 10 минут вылазит сббощение что не хватает оперативной памяти

видать память не освобождаеш. скорее всего при снятии скринов




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


Новичок



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

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



Цитата(drkot @  11.8.2006,  10:59 Найти цитируемый пост)
видать память не освобождаеш. скорее всего при снятии скринов
 Нет... Памяти нехватает на тех компах, которые принимают скрины.

Цитата(drkot @  11.8.2006,  10:59 Найти цитируемый пост)
а твой подход мягко говоря "странный"  

Знаю, но ничего лучше не придумал... Вот и прошу подсказать...

Цитата(drkot @  11.8.2006,  10:59 Найти цитируемый пост)
поднимай UDP клиента

Если бы я зна ЧТО ЭТО  smile Я вообще ге знаю че такое UDP... Растолкуйте если мона....
 smile 

Это сообщение отредактировал(а) Ярик - 11.8.2006, 12:54
PM MAIL   Вверх
Snowy
Дата 11.8.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



А как ты собираешься писать сетевое приложение "типа нетмитинга", если не имеешь представления о работе сети?
Боюсь, курс лекций о сетевом программировании зачитывать будет лениво...
PM MAIL   Вверх
drkot
Дата 11.8.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Цитата(Ярик @  11.8.2006,  12:53 Найти цитируемый пост)
Памяти нехватает на тех компах, которые принимают скрины.

значит на клиентской стороне не освобождаеш. Суть то не меняется.

Цитата(Ярик @  11.8.2006,  12:53 Найти цитируемый пост)
Растолкуйте если мона....

мона. 
UDP - протокол передачи датаграмм. он не требует установления соединения как такового (в отличие от TCP), что позволяет транслировать потоковые данные (музыка, видео, телеметрия). И совершенно не важно когда "клиент" подключится к каналу, он всегда будет получать только текущую информацию (в данном случае скриншоты).

Для реализации сего "чуда" вполне подойдет как TUDPSocket (стандартный) так и TidUDPServer (Indy). Учитывая твой уровень я бы остановился на Indy.
Широковещательная рассылка - Boardcast это когда отправляемые тобой данные попадают на все доступные интерфейсы сети (до ближайшего маршрутизарора).
Это кончно не самый оптимальный способ (например для передачи потокового видео используют специальные "подписные" каналы для уменьшения нагрузки на сеть), но с приделах малой локальной сети аж зашушит  smile

Добавлено @ 13:35 
Snowy, если человек думать умеет то ему можно только направление дать, а далее он сам разберется, а если не умеет то никакой курс лекций не поможет. Такова объективная реальность.
Все мы чегото не знаем.


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


Шустрый
*


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

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



drkot  широковещательные пакеты отсылать это не дело !  smile  Размер то большой сеть грузить будет, тут лучше клиент-серверное сделать..

  smile  На собственном опыте уже испытал когда у нас работал голосовой чат по broadcast'у 

Это сообщение отредактировал(а) FF90h - 11.8.2006, 13:44
PM MAIL   Вверх
drkot
Дата 11.8.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Цитата(FF90h @  11.8.2006,  13:40 Найти цитируемый пост)
клиент-серверное сделать..

это как сказать. реализация по клиент сервер раза в два усложнится; информацию нухно рассылать на много компьютеров тоесть трафик увеличится в N раз (где N число компов клиентов)

Цитата(FF90h @  11.8.2006,  13:40 Найти цитируемый пост)
Размер то большой сеть грузить будет

если передавать в незжатом виде то 1024*768*(32/8)*6=18Mb/sec тоесть стомегабитка ляжет даже при одном соединении  smile 
Если же весли себя скромнее и применить Gif or PNG кодирование то 100кб*6=600кб/сек вполне приемлемый трафик даже для 10. 
Если же использовать клиент сервер трафик умножится на число компов (к примеру 10), тогда 100мегабитка начнет захлебываться ибо при наличии хотябы обного свича с 10 активными портами (подключенными и имеющими минимальный служебный трафик) скорость передачи между любыми бвымя портами не превысит 80Мбит/сек, а при незначительной активности клиентского трафика на остальных портах (10-20кбит) максимальная скорость упадет до 50-60Мбит.

Поэтому широковещательная рассылка имхо самый нормальный выход.

Добавлено @ 14:01 
Цитата(FF90h @  11.8.2006,  13:40 Найти цитируемый пост)
На собственном опыте уже испытал когда у нас работал голосовой чат по broadcast'у

8000*(16/2)=16кб/сек. Ну и какие тут проблемы с трафиком (сколько нужно машин чтоб забить канал?)
Проблемы с наложением это уже совсем другое, это уже к медиа относится и к умению пользоваться селекторной связью.


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


Шустрый
*


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

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




  Все же по обстоятельствам нужно смотреть может у него админы злые  smile 
PM MAIL   Вверх
drkot
Дата 11.8.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



а так понимаю это чтото типа компьютерного класса: один показывает, а остальные смотрят и учатся.
кста идея заинтересовала. и если Ярик, не против можно объдиниль усилия.

Цитата(FF90h @  11.8.2006,  14:02 Найти цитируемый пост)
админы злые

это да. но на каждого админа найдется еще более злой директор  smile 



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


Новичок



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

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



Цитата(drkot @  11.8.2006,  14:11 Найти цитируемый пост)
и если Ярик, не против можно объдиниль усилия.

Не против... Но мне это просто на МАН надо.... Готовлюсь

Пока я сделал 2 проги и вот что у мя было:
1) Программа для сервера:
   • Открывается savedialog для пути сохранения
   • Делает 6 раз в сек скриншот (у них одинак. имена, они взаимозаменяются)
   • Дорисовывает курсор машки на скриншот
   • Сохраняет его 6 раз в сек в папку из 1го пункта.
2) Программа для компа:
   • Открывается opendialog и находим скриншот на серв.
   • На форме удаляется Caption, форма разворачивается на весь экран
   • На форме Image, 6 раз в сек загружает картинку. (Либо ее рисовать на Canvas)
Вот так все примитивно...

Это сообщение отредактировал(а) Ярик - 11.8.2006, 15:17
PM MAIL   Вверх
drkot
Дата 11.8.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Цитата(Ярик @  11.8.2006,  15:01 Найти цитируемый пост)
МАН

это что?

Добавлено @ 15:55 
Малая аккадемия наук?


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


Новичок



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

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



Кто чего добился??
PM MAIL   Вверх
drkot
Дата 14.8.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Сори. пока времени нет свои сроки прижимают.


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

Запрещено:

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

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

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

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

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


 




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


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

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