Конференция "Сети" » скриншот и UDP [D7, WinXP]
 
  • olchick © (03.06.09 16:05) [20]

    > ну чего обижаться...Мы же объясняли, что не тот протокол.
    > ..Или девушка ждала исходный программы ее мечты?пускай напишет,
    >  что она хотела...


    Как передать по протоколу TCP скриншот - не составляет проблемы. Почему выбран был именно UDP? объясняю:

    1. Для локальной сети не думаю, что это принципиально важно, хотя может быть и важно. Дело в том, что TCP - довольно медленный по сравнению с UDP. И если все таки передавать по TCP - возникает только один вопрос: Зачем лишние проверки и подтверждения доставленна ли картинка или нет. Видь при этом мы теряем в скорости...

    2. Сначала моя программа была ориентирована на Tcp, но в связи с несколькими возникшимся проблемами, а именно: низкая скорость передачи, мерцание при смене картинки в image, и таже проблема, о которой я писала в самом первом сообщении с постоянным уменьшением картинки, если отображать принятую картинку в image, а потом вдруг изменить размер image...

    Все это, а также, может быть и то, что такие проблемы возникали не только у меня, но и у других, натолкнули меня на мысль с UDP. Тем более, что я не первая кто использует его именно в этих целях...

    Пробовала также через протокол RDP, но ничего не вышло, была ошибка в компоненте, которую я, и судя по другим форумам, не только я, не знала как исправить.

    По поводу ClientSocket и ServerSocket, что Вы  их обнаружили у меня в коде, то это связанно с другими функциями моей программы. Хотя наверняка можно было и без этих компонент обойтись спокойно, еще раз повторюсь - сначала программа делалась именно для TCP. Зачем на сервере ФОРМА, то это тоже связанно с другими функциями моей горе-программы. И еще одно, я полностью согласна, что надо осуществлять передачу, используя таймер, но это не решает проблему. А на мысль с условием if form3.showing then ... натолкнулась на одном из форумов. По моему хорошее решение и не надо никаких таймеров - результат тот же. P.S. проверенно.

    Почитав документацию, выяснила, что РАДМИН написан для работы с TCP, но он же использует специальный драйвер - и это его фишка.

    Испробовала также код, приведенный код в вашем же форуме с передачей скриншота, и опять все те же, описанные выше ошибки.

    Или взять скажем уже готовые программы для удаленного администрирования - у многих них при разворачивании на весь экран происходят похожие проблемы. И не только при разворачивании.

    Что хотелось от всех Вас, чтобы вы указали в чем возможная проблема, а то на других форумах так и не нашла ответа. может проблема именно в приеме - я не знаю. Поэтому и спрашиваю у экспертов.
  • olchick © (03.06.09 16:09) [21]
    Можно конечно для ускорения передачи по TCP использовать следующий прием: сняли скриншот- разбиваем поток на несколько частей и шлем паралельно их на клиент.
    Но как это сделать, а главное как потом собрать все воединно не знаю.
  • FireMan_Alexey © (03.06.09 16:32) [22]

    > разбиваем поток на несколько частей

    Этого делать не нужно, да и не поможет!
    Основная задержка при сжатии из БМП в ДЖИПЕГ.
    если у тебя 100Мбит то 100000000/8=1250000 Кбайт/с достаточно для того чтобы посылать приблизительно 5-8 кадров 1024:768 в секунду.
  • Dennis I. Komarov © (03.06.09 16:35) [23]

    > Можно конечно для ускорения передачи по TCP использовать
    > следующий прием: сняли скриншот- разбиваем поток на несколько
    > частей и шлем паралельно их на клиент.
    > Но как это сделать, а главное как потом собрать все воединно
    > не знаю.

    И почему оно будет быстрее?
  • Dennis I. Komarov © (03.06.09 16:37) [24]

    > если у тебя 100Мбит то 100000000/8=1250000 Кбайт/с достаточно
    > для того чтобы посылать приблизительно 5-8 кадров 1024:768
    > в секунду.

    Положим всю сеть... :)
  • FireMan_Alexey © (03.06.09 16:37) [25]
    В джипег конечно :)
    РАдмин использует алгоритм анализа изменения изображения на экране, и посылает только то, что изменилось. Я дал ссылку выше, там сайт с протоколами и описаниями видео форматов МПЕГ. принципы работы. почитай может поможет.
    Ну и наверное не обойдется без какого-нибудь драйвера прослойки между основными видео драйверами.
  • FireMan_Alexey © (03.06.09 16:39) [26]

    > Положим всю сеть... :)


    Конечно, но если делать скриншотами, то только так :)
  • FireMan_Alexey © (03.06.09 16:41) [27]
    1250000 байт/с :)
  • Dennis I. Komarov © (03.06.09 16:45) [28]

    > Конечно, но если делать скриншотами, то только так :)

    А так не надо делать, а она вот уперлась :) выбрали и все тут...
  • olchick © (03.06.09 17:05) [29]

    > Этого делать не нужно, да и не поможет!Основная задержка
    > при сжатии из БМП в ДЖИПЕГ. если у тебя 100Мбит то 100000000/8=1250000
    > Кбайт/с достаточно для того чтобы посылать приблизительно
    > 5-8 кадров 1024:768 в секунду.


    у вас на форуме нашла ветвь intel jpeg libruary и сокеты, попробывала сжимать с помощью этой библиотеки вродибы получилось - все сжалось, но есть проблема: эта библиотека вродибы не позволяет сохрянять данные в поток, поэтому приходиться сохранять сначала в виде файла, потом в переменную jpg : Tjpegimage загружаем изображение из файла, а только потом сохраняем все в поток. Но похоже, что обчинка выделки не стоит.
    Или я опять что не так делаю.

    Буду разбираться с вашими советами и ссылками и копать в сторону принципаов радмина.

    Senk you very much...
  • Сергей М. © (03.06.09 18:25) [30]

    > Или я опять что не так делаю


    Именно.

    Передавать следует не весь шот, а только его изменения отн-но предыдущего шота.

    Огромную помощь в этом оказывает display mirror driver.
  • olchick © (03.06.09 19:15) [31]

    > Огромную помощь в этом оказывает display mirror driver.


    а теперь подробнее, пожалуйста.

    что это такое, где его взять и главное как этим пользоваться?
  • Сергей М. © (03.06.09 19:21) [32]
  • DVM © (04.06.09 15:11) [33]

    > olchick ©


    > Сначала моя программа была ориентирована на Tcp, но в связи
    > с несколькими возникшимся проблемами, а именно: низкая скорость
    > передачи, мерцание при смене картинки в image

    Я могу передать не то что по TCP, а даже по HTTP кадров 200 в секунду. Так что в UDP смысла нет.
  • DVM © (04.06.09 15:14) [34]

    > olchick ©   (03.06.09 17:05) [29]


    > у вас на форуме нашла ветвь intel jpeg libruary и сокеты,
    >  попробывала сжимать с помощью этой библиотеки вродибы получилось
    > - все сжалось, но есть проблема: эта библиотека вродибы
    > не позволяет сохрянять данные в поток

    Она умеет и сжимать и разжимать данные в памяти, надо не слепо копировать код а посмотреть хотя бы заголовочный файл библиотеки. Прикрутить все это затем к TStream не сложно.
  • brother © (05.06.09 04:16) [35]
    > а даже по HTTP кадров 200 в секунду

    О_о интересно посмотреть на скрипт)
  • DVM © (05.06.09 11:17) [36]

    > brother ©


    > О_о интересно посмотреть на скрипт)

    Да это у меня не скрипт, а целая большая программа, что-то вроде прокси-сервера или ретранслятора для IP камер. Принимает один поток - отдает множеству клиентов. Для гигабитной сети и 1000 кадров в сек (JPEG) реально передать.
  • brother © (16.06.09 04:11) [37]
    > > а даже по HTTP кадров 200 в секунду

    ? это 200 запросов или типа кэша и аджакса с буфером в 200 кадров?
  • DVM © (16.06.09 16:31) [38]

    > brother ©   (16.06.09 04:11) [37]


    > это 200 запросов

    Нет конечно. Один поток - один запрос. Каждый кадр не запрашивается. Поток бесконечен и выдается клиенту пока тот желает его принимать. Кадры разделены разделителями.
    Content-type: multipart/x-mixed-replace
  • brother © (17.06.09 04:24) [39]
    > Поток бесконечен и выдается клиенту пока тот желает его
    > принимать. Кадры разделены разделителями.
    > Content-type: multipart/x-mixed-replace

    а, понял
 
Конференция "Сети" » скриншот и UDP [D7, WinXP]
Есть новые Нет новых   [134435   +20][b:0][p:0.001]