Имя: Пароль:
IT
Админ
План написания убийцы TeamViewer и прочих Ammyy...
🠗 (Волшебник 10.07.2015 17:41)
,
0 Garykom
 
гуру
24.06.15
05:39
1. Хочу демо/тест 49% (17)
2. Нафейхуа 34% (12)
3. КГ/АМ 17% (6)
Всего мнений: 35

Собственно они слегка достали, ТВ своей "борьбой с халявщиками" а аммии тормознутостью (вытекает что вместо написания своего переделали сорцы VNC) и что его банит Chrome.

Хочу свой с посекундной тарификацией за время работы и прочими.

Для кроссплатформы решил freepascal|lazarus и чтобы ничего допом типа jre или .net не нужно было ставить.

Вообщем нужен план и фичи первоочередные.
Пока набросок

1. Сервер-репитер с белым ip пашет как пересылатель туды/сюды и еще для учета и прочего

2. Прога включает в себе сервер:
2.1 соединяется с репитером, отправляет ему свой id
2.2 ждет коннекта, после
2.3 начинает слать скриншоты сжатые чем то // чем лучше?
2.4 получает команды мыши/клавы и выполняет

3. И клиент:
3.1 соединяется с репитером, отправляет ему свой id
3.2 делает запрос на подключение к серверу по id
3.3 получает сжатые скриншоты, распаковывает и показывает
3.4 отправляет команды мыши/клавы

ЗЫ собственно что я упустил?

ЗЗЫ получение скриншотов уже сделал )) раз в 10 миллисекунд вроде сильно слегка устаревший комп не грузит, причем еще и отображение пашет

ЗЗЗЫ http://saveimg.ru/show-image.php?id=f00f2cef9a7e71599dadbc28ad7f5034
439 Jump
 
29.06.15
11:24
(436)Тимвьювер не кроссплатформенный.
Попробуй модуль для винды запустить на линуксе.

Для каждой платформы свой клиент, написанный именно под эту платформу.
Т.е для винды, для андроида, для мака, и для линукса.
Причем не каждый клиент поддерживает все функции.
440 Garykom
 
гуру
29.06.15
11:26
(439) вот это уже холивар пошел...

как бы у меня код кроссплатформенный (одинаковый для всех), понятно что под каждую отдельно компилить
441 Jump
 
29.06.15
11:31
(440)Вот у меня есть программулька кроссплатформенная - джава
Ее хоть на винде, хоть на маке запускай, лишь бы джава машина была. Прекрасно работает.

Это полная кроссплатформенность.

Есть софт который можно перекомпилировать под другую платформу.
Но тимвьювер к нему не относится.
Ты не скомпилируешь софт написанный исключительно под винду, для линукса. Ибо он работает с Win API.
Для линукса есть свой нативный клиент.
И общего у него с клиентом для винды только название и внешний вид.
442 Garikk
 
29.06.15
11:35
(441) с паскажем тут какраз "есть варианты"
443 Garikk
 
29.06.15
11:35
(442) тьфу.. "с паскалем"
444 Провинциальный 1сник
 
29.06.15
11:37
(439) Кстати, запускат тимвьювер под виндой через вайн - почти нормально работал)
445 Jump
 
29.06.15
11:37
Определить на глаз очень просто - тимвьювер рисует окошки через WinAPI, эти окошки выглядят по разному в зависимости от темы оформления винды.
Т.е нативные виндовые окошки.

А кросплатформенный софт рисует окна, своей библиотекой, которую таскает вместе с собой.
446 Провинциальный 1сник
 
29.06.15
11:37
(444) Пардон, имел в виду виндовый тимвьювер в линуксе.
447 Jump
 
29.06.15
11:38
(444)Чего?
Под виндой? Через вайн? Да вы однако извращенец.
Не подскажете где скачать вайн под винду?
448 Jump
 
29.06.15
11:38
(446)Ааа, понятно.
Ну не проще ли нативный клиент скачать?
449 Garykom
 
гуру
29.06.15
11:43
(447) уточняю... тим под линукс и так через свой вайн работает
450 Garykom
 
гуру
29.06.15
11:44
(441) хм а как насчет эту программульку на java запустить в андроиде?
под который кстати на java в основном и пишут программы...
451 Провинциальный 1сник
 
29.06.15
11:47
(445) Так основная проблема не в отрисовке, а в захвате экрана. На разных системах это делается по разному.
452 Garykom
 
гуру
29.06.15
11:48
(451) если бы только захват экрана...
453 Jump
 
29.06.15
11:48
(449)Нет.
Вайн это собственно куча библиотек которые обеспечивают под линуксом обработку WinAPI.
И весят они офигеть как немало.

А тимвьювер под линуксом использует родные библиотеки.
454 Garikk
 
29.06.15
11:48
(450) под андройд надо переписывать, то на чём под андройд программы пишут...это не совсем правильная java...это изврат
455 Jump
 
29.06.15
11:48
(451)Да основная проблема в захвате, отрисовку я привел как наглядный пример.
456 Jump
 
29.06.15
11:51
(450)Ну кроме программной платформы не последнее место имеет железная платформа.
Программулька работает с мышкой на любой платформе, и не приучена работать на мелких экранах, т.е просто там недостаточно функционала железного для запуска.
А чисто программно - не проблема.
457 Jump
 
29.06.15
11:52
Сам не пробовал, но по идее на нетбуке с андроидом должна стартануть.
458 stix2010
 
29.06.15
11:53
(453) teamviewer для linux содержит свою версию wine. Кроссплатформенность это иллюзия
459 Garikk
 
29.06.15
11:54
(457) в андройде нет полноценной jvm, там кособокий dalvik собранный ищ обломков java 6 ...а в новых андройдах из него какойто ART соорудили... но один фиг нативная java там не работает
460 Jump
 
29.06.15
12:02
(459)Ну может и так, я с андроидом не дружу.
461 Jump
 
29.06.15
12:04
Но вернемся к теме.
Garykom ты уже написал план работ?
Базовый функционал, и схема работы сервиса?
462 Garykom
 
гуру
29.06.15
12:07
(461) как бы просто (0) расписал более детально после того как демку накидал

но куча пунктов добавилось и фичей

вот сча думаю в простом варианте запускать или все таки пилить до "конфетки", но тогда $ нужно искать и еще разработчиков
463 Garikk
 
29.06.15
12:10
imho стоит запускать в простом варианте, и искать инвестора под стартап

иначе допиливание может очень на долго затянутся
я так один свой проектик с декабря "допиливаю"...всё никак не могут выползти от попыток "конфетку" сделать
464 Jump
 
29.06.15
12:33
(462)Ты все еще думаешь делать скриншоты слать их?
Или нашел другое решение?
ИМХО это тупиковый путь - трафик будет такой, что канал потребуется на 100мегабит.
465 Jump
 
29.06.15
12:34
(463)Инвестора есть смысл искать, когда есть готовое и хорошо работающее приложение, которое можно допиливать.
466 Garikk
 
29.06.15
12:37
(465) как показывает практика, люди находят инвесторов даже с безнадёжным ппц-ом, с тремя строчками кода и иногда даже без нормальной идеи
Тупо с картинками и красивыми презенташками
467 Garikk
 
29.06.15
12:39
достаточно на список проектов известных инкубаторов посмотреть, там такой дикий ужас, меня вообще поражает КАК за такое деньги дают...
468 Jump
 
29.06.15
12:41
(466)Не этот случай. Одно дело найти инвестора на нечто новое, что никогда никто не делал.
Другое дело найти инвестора на приложение которое повторяет функционал существующего.
Программ для удаленного доступа сотни, из них десяток более-менее известных. Рынок забит.
469 Garykom
 
гуру
29.06.15
12:41
(464) как бы все скриншоты шлют (teamviewer, ammyy и прочие vnc) так что не вижу проблемы

только они не полные понятно шлют, а только изменившиеся области

еще есть вариант с векторизацией, но это нереально быстро реализовать
470 Garikk
 
29.06.15
12:43
(469) так прочие vnc тормозят неимоверно на слабых каналах (468) сколько убийц фейсбуков и форскверов было...этож жесть какаято..
471 Garykom
 
гуру
29.06.15
12:43
(468) как бы наоборот проще, только БП должен быть нацелен на отличия от основных конкурентов, на маркетинг и экономическую часть больше
472 Jump
 
29.06.15
12:43
(469)Ну самое простейшее что использовалось на заре VNC это скриншоты прямоугольных примитивов.
Т.е отслеживают область изменений и ее пересылают.
Это дикий трафик. Даже в таком виде.

А уж если целиком слать скриншоты, то это вообще жестко будет.
473 Garykom
 
гуру
29.06.15
12:44
(470) угу только немало и взлетело как бы моя фейсбуком не пользоваться совсем в отличие от вконтактика
474 Jump
 
29.06.15
12:44
(470)А на слабых каналах работают только два метода из ныне существующих - это закрытый код от тимвьювера, и RDP.
475 Garikk
 
29.06.15
12:44
(473) сколько взлетело то?

Мой мир помер, мой круг помер... осталсь только одноглазники и ВК
476 stix2010
 
29.06.15
12:45
лучше описание RDP протокола найти (в идеале ICA, но кто ж его раскроет)
477 Garikk
 
29.06.15
12:45
(475)_ даже гуглплюс не взлетел с такой то расруткой
478 Jump
 
29.06.15
12:46
(476)Да вроде RDP открытый протокол.
479 Garykom
 
гуру
29.06.15
12:47
(474) не хочется разочаровывать, но у тимвьювера просто идет автоподстройка частоты скриншотов под канала

типа совсем если хреновый начинает кадр раз в 2-3 секунды передавать
480 Jump
 
29.06.15
12:54
(479)Это так, а при чем тут разочаровывать?
Главное работает. А физику не победишь.
Если канал узкий и не позволяет передать достаточно данных, надо уменьшать количество данных в ущерб качеству.
Все логично.
481 Jump
 
29.06.15
12:55
Единственный кто нормально, показывает видео это RDP, но и канал должен быть офигенным.
482 Garykom
 
гуру
29.06.15
12:56
(480) при том что нету никакого "секретного метода"

а с rdp еще проще все, он на контролах работает по умолчанию и когда может
попробуйте через rdp фильму посмотреть а вот потом и говорите насчет скорости ))
483 Garykom
 
гуру
29.06.15
12:57
(481) потому что если канал "не офигенный" он вообще тупо виснет с видео...
484 Jump
 
29.06.15
12:58
(482)Так какой может быть секретный метод?
Все методы известны. Вопрос лишь в том насколько качественно он реализован и допилен под задачу.

А на RDP видео классно идет, смотреть можно.
485 Garykom
 
гуру
29.06.15
12:59
как бы ничего не мешает использовать принципы live stream video

и будет даже лучше чем rdp и при этом не так грузить канал

но будет тогда грузить проц хоста
486 Jump
 
29.06.15
12:59
Да RDP повиснет с видео на слабом канале. Есть такое.
У тимвьювера идет автоподстройка под ширину канала, а у RDP с этим хуже.
487 Jump
 
29.06.15
13:01
(485)Вот.
А у меня множество хостов - это дохлые машинки со слабым процессором и минимумом оперативки.
Если их озадачить кодированием видео на лету, будет очень печально.
Удаленка может и будет работать, а вот работать с машиной станет невозможно.
488 Jump
 
29.06.15
13:03
Поэтому логичнее всего будет допиливать VNC, в плане оптимизации и динамической автоподстройки к ширине канала.
А не изобретать лисапед.
489 Garykom
 
гуру
29.06.15
13:03
(487) как бы обычная дилемма выбора

на слабых машинках лучше всего пашет radmin, он да через видеодрайвер работает, но с нагрузкой на канал у него все плохо
490 Garykom
 
гуру
29.06.15
13:05
(488) VNC это просто сокращение https://ru.wikipedia.org/wiki/Virtual_Network_Computing

по сути протокол

конкретные реализации на языках программирования (почти всегда c++) называются с разными приставками

как бы моя ничего не нарушать даже канонов
491 Jump
 
29.06.15
13:09
(490)VNC это протокол удаленного доступа.
А если говорить о методах передачи изображение то там протокол RFB.
492 Jump
 
29.06.15
13:13
У тимвьювера скажем логика похоже следующая - есть приоритет передачи.

Т.е стандартный RFB, выбираются области с изменениями и передаются, но в первую очередь передаются области с наименьшими изменениями, а там где изменений много - передаются по принципу - сколько успеет, на данном канале.

В итоге курсор, рабочий стол - отрисовываются быстро, а если где то открыто видео, оно при слабом канале будет обновляться раз в минуту.
493 Jump
 
29.06.15
13:25
Еще преимущество тимвьювера в том, что там реализован NAT traversal.
Хотя если будет свой личный репитер, то можно обойтись без этого.
494 Garykom
 
гуру
29.06.15
13:33
потестил формат графики bpg, сжимает то он конечно замечательно... в 3-6 разу лучше чем jpg или png

но с такими тормозами что применить не получиться походу
495 stix2010
 
29.06.15
14:29
кстати, если прикрутить передачу только дельта изменений то трафик упадет в разы, к примеру 1 кадр в секунду ключевой, потом передача дельты относительно ключевого.
496 Garykom
 
гуру
29.06.15
14:30
(495) дык это и ваяю сча
497 stix2010
 
29.06.15
14:33
а вообще ключевую картинку необходимо поделить на области и передавать дельты из каждой области
498 Jump
 
29.06.15
14:33
(497)Дык это собственно и делается в том же VNC.
499 Jump
 
29.06.15
14:36
Тут еще походу и кэширование не помешает.
В стандартной работе часто приходится иметь дело с одими и теми же изображениями, которые просто перемещены.
Т.е если ты передвинул окно в другую часть экрана, гораздо проще взять готовый фрейм из буфера на локальной машине, и отрисовать его на новых координатах, чем тащить по сети его, или его дельту с прежним изображением на этом участке.
500 Гёдза
 
29.06.15
14:37
(499) так мы и до реализации рдп дойдем ))
501 stix2010
 
29.06.15
14:38
(498) хех, написал стих "Мой дядя самых честных правил...", оказалось это уже Пушкин до меня сочинил
502 Jump
 
29.06.15
14:40
(501)Да Пушкин вообще подлец, написал все стихи которые можно было написать, а теперь современная молодежь мучается, ибо чтобы ни придумали - у Пушкина уже есть.
503 Garykom
 
гуру
29.06.15
14:42
(499) идея интересная но реализовать проблемно, хотя можно через отслеживание координат окон

вот если видео на экране кажется и в нем квадратик двигается то уже никак по простому
504 Jump
 
29.06.15
14:46
(503)Если говорить о винде, то не очень проблемно.
Кординаты всех ярлыков, окон и прочего можно узнать у эксполрера, или  через винапи.
505 Garykom
 
гуру
29.06.15
14:46
(503)+ хотя... если хранить (как и передавать) изображения сразу с хешем то можно ))

т.е. свернули окно, показываем рабочий стол весь, назад восстановили - опс а картинка то уже есть
506 Garykom
 
гуру
29.06.15
14:47
(504) угу только как бы сразу "для разных ОС" хочу, т.е. варианты "только для винды" рассматриваю в последнюю очередь
507 Jump
 
29.06.15
14:49
(506)Дык в линуксе тоже есть методы чтобы получить координаты объектов на рабочем столе.
Просто они другие.

Т.е в разных ОС будет просто разные механизмы получения и работы с ними, а объекты одинаковые.

Поэтому в любом случае для вин и лин клиенты должны быть разными.
А протокол обмена между разными клиентами должен быть один.
508 Garikk
 
29.06.15
14:51
(507) в линухе можно из иксов напрямую тянуть примитивы которыми он рисует окно
509 Garikk
 
29.06.15
14:52
в винде затрудняюсь сказать насколько это доступно
510 Jump
 
29.06.15
14:52
(509)В винде то же самое, только реализация различается.
511 Garykom
 
гуру
29.06.15
16:06
(510) даже тимвьювер для линукс не стали переписывать а вайн заюзали... вы хотите чтобы я написал круче чем они?
512 Провинциальный 1сник
 
29.06.15
16:15
(497) Причем в первую очередь и с лучшим качеством передавать те участки, где ближе мышка или где находится текстовый курсор. Во вторую - где были больше изменений. Ну и в третью всё остальное.
513 Garykom
 
гуру
29.06.15
16:22
(512) больше изменений это как?

пока простой алгоритм есть два кадра (текущий и предыдущий), бежим по пикселям слева-направо и сверху-вниз, если цвет точки на кадрах отличается то кидаем в кадр изменений (этот кадр изменений по сути целый экран с прозрачным фоном)

если много изменений (больше 50%) причем это обнаружилось еще в процессе пока не дошли до конца, то прерываем сравнение и шлем целый кадр
514 Garykom
 
гуру
29.06.15
17:07
(513) вот кстати этот метод пробег по всем пикселям и сравнение на больших разрешениях экрана вызывает слегка тормоза

т.е. придется по некой сетке делать или еще как типа http://www.delphimaster.ru/cgi-bin/forum.pl?id=1284964400&n=7
задачка то древняя любителей лисапедов много
515 Garikk
 
29.06.15
17:18
я плохо соображаю в математике, но сдаётся мне что картинки можно сравнивать как две матрицы...и относительно этого высчитывать различия
516 Garikk
 
29.06.15
17:19
плюс такие вычисления видеокарта умеет делать довольно шустро
517 Jump
 
29.06.15
18:10
(514)Понятно что будут тормоза, как при подсчете, так и при передаче.
Не надо бегать по пикселам, работай с областями.
518 Jump
 
29.06.15
18:47
Вообще чтобы не городить велосипед из костылей, думаю за основу стоит взять принципы работы RFB.
http://www.realvnc.com/docs/rfbproto.pdf
519 Злопчинский
 
29.06.15
18:49
жду велосипеда на тестдрайв. надеюсь, что в альфа версии тормозные колодки не прилипнут к ободам

Хочу демо/тест
520 Garykom
 
гуру
29.06.15
19:04
(519) лисапед пока тока прямо едет (без репитера) и медленно, это совсем неинтересно
521 Garykom
 
гуру
29.06.15
19:08
Гм интересная задачка, а как можно определить что 2 компа находятся в одной локальной/виртуальной сети?

Хотя понятно делаем пробный коннект к ожидаемому ид и если нет коннекта или ид не тот то нуна через репитер
522 Jump
 
29.06.15
19:20
(521)Не понял зачем это нужно? А вообще через широковещательную рассылку можно.
523 Garykom
 
гуру
29.06.15
19:31
(522) чтобы через репитер поток не гнать если можно напрямую, когда компы в одной локалке или белые ip

хм еще нужно предусмотреть вариант обратного подключения когда у админа белый ip а целевая машина за натом, чтобы целевая обратный прямой коннект сделала

т.е. компы 1 и 2 соединены с репитером 3, если комп 1 хочет управлять компом 2 то:

делаем попытки соединения 1->2 и 2->1, если обе не прошли то через репитер 1->3->2
524 Jump
 
29.06.15
19:42
(523)Лучше не мудрить, а сделать переключатель.
По дефолту считаем что работаем в интернете, для подключения по локальной сети ставим галку.
Или банально указываем айпишник.
525 Garykom
 
гуру
29.06.15
20:44
(524) неа, предпочитаю следовать принципу kiss

т.е. для пользователя все должно быть как можно проще и понятнее, все сложное в доп.настройках или отдельный режим работы(эксперт)/версия
526 forforumandspam
 
01.07.15
08:18
(394) +100500
527 forforumandspam
 
01.07.15
08:52
(0) Хочется больше настроек качества изображения, а именно, выбирать кадры/с, кратность размера картинки и уровень качества jpeg (0..100). Кратность - это вместо 1200х1600 на клиенте увидеть 600х800. Иногда важно хоть что-то, хоть как-то увидеть, чем ничего.
528 Garykom
 
гуру
10.07.15
17:04
(527) для этого нужно как то скорость канала оценить

все методы что я знаю дают дикий разброс на коротком интервале тестирования (меньше несколько минут)
529 H A D G E H O G s
 
10.07.15
17:10
Прошло 2 недели с начала темы.
Што написано афтором?
530 Garykom
 
гуру
10.07.15
17:16
(529) автор дальше пока ничего не делал, пытаюсь траблы на основной работе решить и машину обновить... при этом все это перемежается отвлечением на флуд на форумах

ЗЫ пора что то бросать...
531 H A D G E H O G s
 
10.07.15
17:21
(530) Давай я тебе расскажу, что будет дальше:

1. Ничего.
532 Garikk
 
10.07.15
17:35
А как всё хорошо начиналось :))
533 Garykom
 
гуру
10.07.15
17:40
(531) не спорю, возможно и так
534 DDwe
 
10.07.15
18:54
Хотели как лучше, а получилось...
535 mistеr
 
12.07.15
20:55
Пока автор флудил на форуме, уже RDP клиент на JavaScript написали.
536 Salimbek
 
14.07.15
14:53
(535) Не верю, VNC - написали, RDP - нет.
537 Garykom
 
гуру
14.07.15
16:50
(535) молодцы терь пусть сервер напишут...и заставят на любой оси (любом броузере) это работать
538 mistеr
 
16.07.15
14:45
(536) https://github.com/citronneur/mstsc.js - попробуй.

Правда, кроме браузера, требуется Node.js. Пока.
Программист всегда исправляет последнюю ошибку.