-
По RDP юзер цепляется к компьютеру. Периодически могут возникать проблемы с соединением. В таких случаях требуется сделать что-то. Нашел WTSQuerySessionInformation https://msdn.microsoft.com/en-us/library/aa383838(v=vs.85).aspx из WTS_INFO_CLASS выцепаю Компьютер или IP c которого сидит юзер, физически. Далее пинг от программы(моей, на удаленке) к Компьютер или IP c которого сидит юзер, физически.. И вот тут засада - некоторые пингуются, а некоторые - нет При этом ClientAddr и ClientName определяется правильно - логирую, смотрю - совпадает Пробую пинг через cmd - тоже самое, не пингуется. (превышен интервал ожидания) Тут еще подумал - в принципе, юзер может вообще отключить ответ на пинг. Вопрос Как можно (еще) проверить что качество соединения RDP стало "плохим"?
-
пока думаю считать дельту DWORD IncomingBytes; DWORD OutgoingBytes; из WTSINFOEX_LEVEL1 structure которую можно той же WTSQuerySessionInformation получить
но что-то не нравится такой способ )
-
А с целью? Неужто юзер не сможет лучше понять качество подключения?
-
это тот случай когда оценка плохости канала ухудшает состояние этого канала.
-
Цель - контроль
Есть операции, при которых юзеру запрещено оставлять текущую операцию. например, диалог с клиентом в чате. У юзера-девочки может зазвонить телефон, он на минуту оставляет клиента, занимаясь бой-френдом. Клиент пишет-пишет, а ответа нет. Клиент жалуется. Юзер сообщает, что было подвисание коннекта. Сейчас этот момент никак не контролируется.
Или если юзер совсем отвалился, требуется клиента перекинуть на первого свободного оператора
-
> Cobalt © (18.07.16 14:32) [2] > А с целью? > Неужто юзер не сможет лучше понять качество подключения? >
Володь - ты иногда такие ответы даешь, хоть стой - хоть падай. Ты 24 кадра в секунду на глаз от 25 отличить сможешь?
-
Надзиратель надежнее был бы :)
-
ну..люди работают разные и по-разному, в т.ч. из дома, в т.ч. на пару часов в день подключаются поработать разные студенты.
-
> ВладОшин © (18.07.16 13:24)
> пинг
пинг, в качестве единственной меры контроля использовать ни в коем случае нельзя. начиная с 7, по умолчанию, стандартный сетевой экран полностью блокирует все сходящие ICMP. другими словами, чистая система пинговаться не будет вообще. нужно, как минимум, пробовать установить TCP соединение, на какой-либо точно открытый порт.
-
> например, диалог с клиентом в чате.
а если в этом примере просто посылать неотображаемые короткие тексты"пинг" с ответом "понг"? В момент, когда другие сообщения не посылаются. Пересылка двух сообщений, связанных по событию прием-передача, гарантирует, что чат работает. И используется тот же механизм, что удобно
-
> Rouse_ © (18.07.16 15:22) [5] > > > Cobalt © (18.07.16 14:32) [2] > > А с целью? > > Неужто юзер не сможет лучше понять качество подключения? > > > > > Володь - ты иногда такие ответы даешь, хоть стой - хоть > падай. > Ты 24 кадра в секунду на глаз от 25 отличить сможешь?
Я помню работая в одной конторе мне тестер написал, что интерфейс начал медленнее работать на 0,1 секунду. При масштабе 1-3 секунды. Пришлось написать программу, которая отмеряла интервал 1 или 1,1 секунды, а тестер должен был определить :))
-
> пинг, в качестве единственной меры контроля использовать > ни в коем случае нельзя
закинул на несколько машин, на 4х из 5 не пингуется А почитав, похоже, вообще нельзя. Ни в качестве какой.
> Kilkennycat © (18.07.16 20:18) [9]
Костя, ты, кажись, не понял ) Есть машины А[i], рабочие, хорошие, двойное резервное по эл.энергии, тройное по провайдеру, кондей, админ дежурный - все стоят в Нерезиновске. И есть Б[i] - разные люди по всей РФ, цепляются к А[i] и работают, якобы там. Какие Б[i] - не понятно, любые могут быть. Ставить на них что-то, ну, в общем случае, нельзя. А[i] работают с БД, с клиентом, часто на ПО клиента или в браузере. (Может, видел где-то - заходишь на сайт, там всплывает окошко консультанта, можно поговорить. Вот в т.ч. и такая деятельность шарагой поддерживается - операторы проходят обучение и консультируют посетителя) т.е. проблем на компах А[i] при работе нет в 99.99%% случаях. Проблема с коннектом с Б[i] из Урюпинска до А[i] в Москве.
-
> ВладОшин © (18.07.16 13:24) > > По RDP юзер цепляется к компьютеру. Периодически могут возникать > проблемы с соединением. В таких случаях требуется сделать > что-то. >
Кому требуется? Б[i] в Урюпинске или А[i] в Москве? Или лично тебе?
-
Ну в смысле, что если я живу в Урюпинске и у меня хреновый "интернет", то должен ли я (имею ли я право) требовать с Москвы что-нибудь?
-
скатываемся в бла-бла-бла ну ладно )
> Кому требуется?
Требуется начальству, делать мне.
> должен ли я (имею ли я право) требовать с Москвы что-нибудь?
Имеешь. Но руководство решит, профинансировать ли тебе что-то другое, или распрощаться с тобой, в случае невозможности повысить тебе "интернет"/железо. В разумных пределах, разумеется ) (как человек из такого же Урюпинска(хоть и не оператор), постоянно что-то выбиваю - то память, то доп.винты, то еще что. Интернет сам купил максимальный в нашем городе - 45 mbt - уже и больше есть, но хватает вполне и такого)
-
> ВладОшин © (18.07.16 23:52) [11]
ну, тогда я опять не понял... ставить на b[i] ничего и не надо. надо допилить этот самый чат, чтобы он имитировал общение, которое никто не видит, в паузах между реальным общением. Тогда на A[i] будет видно, что клиент задал вопрос в 11.00. оператор ответил в 13.00. за прошедших два часа допиленная фича переслала из компа b[i] в комп a[i] и обратно 288 сообщений (которые по сути являлись аналогом нормального общения) каждые 5 секунд, и отмазка оператора о плохом коннекте не катит.
-
> чтобы он имитировал общение, которое никто не видит судя по имени пойдет WTSIsChildSessionsEnabled
-
> Kilkennycat © (19.07.16 10:09) [15]
теперь я не понял
>> на A[i] будет видно, что клиент задал вопрос в 11.00. оператор ответил в 13.00 это все видно, логируется. возникает вопрос, что делаешь ты 2 часа? Ответ - у меня RDP проглючил, не мог мышку подвинуть толком на 10 пикселов в течении часа. Проверка? >> фича переслала из компа b[i] в комп a[i] т.е. поставить на компы b[i] дополнительное "ПО". Или кто тогда будет слать? Я с самого начала предлагал считать дельту
> DWORD IncomingBytes; > DWORD OutgoingBytes; > из > WTSINFOEX_LEVEL1 structure
но тут что плохо - не понятно, эти байты они всегда гоняются или как. если юзер ничего не делает, зачем их особо много гонять а если их мало - это юзер ничего не делает, или это связь плохая
Николай вот что-то нарыл пойду про WTS еще почитаю вернусь-доложу )
-
Влад, зачем ты такой Кулибин ?
Купи программу Стахановец и не парься
-
> Rouse_ © (18.07.16 15:22) [5] > > Cobalt © (18.07.16 14:32) [2] > > А с целью? > > Неужто юзер не сможет лучше понять качество подключения? > Володь - ты иногда такие ответы даешь, хоть стой - хоть падай. > Ты 24 кадра в секунду на глаз от 25 отличить сможешь?
Саш, ну видно же сразу, что вопрос ТСа - классический случай X-Y-Z. Надо же как-то пнуть дальше раскрывать тему :-)
-
> Как можно (еще) проверить что качество соединения RDP стало "плохим"?
Как вариант:
Сделай TCP-пинговалку на еще какой-нибудь порт на сервере, придумай легенду (безопасность/учет/бонусы) по которой клиент запустит ее вместе с rdp.
-
Ну... С этой позиции - согласен :)
-
Не удобно с планшета писать, ответ, конечто на этот пост был :) Cobalt © (19.07.16 16:19) [19]
-
Игорь Шевченко > Купи программу Стахановец и не парься
судя по демке, неплохая программа ) но не.. Она не сможет как надо прореагировать в основной программе компании. Например, перевести софтверный звонок(голосового клиента), перекинуть клавиатурного клиента. Это тоже необходимо. Да и суть всех этих программ - внедрить "стукача" ) На комп юзеру это не надо делать, а на RDP смысла нет. И так есть лог что в каком окне нажал, по какому контролу кликнул. Ситуация та же - да, видно, что 15 мин, к примеру, не было активности. Но это никак не скажет про качество коннекта RDP при этом.
> Cobalt © (19.07.16 16:19) [19]
да пинай, конечно ) X-Y-Z, так X-Y-Z, только не пойму все равно куда идти )
-----------
в общем, вот такое дело WTSINFO structure имеет DWORD IncomingFrames; DWORD OutgoingFrames; и WTS_CONNECTSTATE_CLASS State; остальное не интересно
считаю фреймы и статус:
ничего не делаю, смотрю на memo1 18:38:01 [State=WTSActive In=1662 Out=4072] 18:38:02 [State=WTSActive In=1662 Out=4073] 18:38:03 [State=WTSActive In=1662 Out=4074] растет исходящий, на месте входящий
свернул окно RDP 18:38:17 [State=WTSActive In=1687 Out=4098] 18:38:18 [State=WTSActive In=1687 Out=4098] 18:38:19 [State=WTSActive In=1687 Out=4098] все стоит
перекрываю RDP другим окном 18:38:31 [State=WTSActive In=1717 Out=4118] 18:38:32 [State=WTSActive In=1717 Out=4119] 18:38:33 [State=WTSActive In=1717 Out=4120] тоже самое, что ничего не делать
открыл перекрытое RDP, что-то делаю 18:38:45 [State=WTSActive In=1747 Out=4144] 18:38:46 [State=WTSActive In=1755 Out=4150] 18:38:47 [State=WTSActive In=1762 Out=4152] все растет
закрыл окно RDP крестиком 18:38:52 [State=WTSDisconnected In=0 Out=0] 18:38:53 [State=WTSDisconnected In=0 Out=0] 18:38:54 [State=WTSDisconnected In=0 Out=0]
подсоединился, что-то делаю 18:39:11 [State=WTSActive In=80 Out=91] 18:39:12 [State=WTSActive In=83 Out=92] 18:39:13 [State=WTSActive In=84 Out=93]
как бы испортить коннект теперь в процессе замера? )
-
вырубил роутер из розетки 19:06:59 [State=WTSDisconnected In=0 Out=0] 19:07:00 [State=WTSDisconnected In=0 Out=0] то же самое, что закрыть окно
а вот как бы изобразить, что связь через какой-нибудь модем на 14400 , с ошибками постоянными..
-
> ВладОшин © (19.07.16 18:59) [23]
можно внутри самого RDP сеанса проверять GetLastInputInfo. в любом случае, нужно контролировать сам RDP сеанс, а не соединение. Не особо сложная задача, в принципе, если требуется просто функционал.
-
> можно внутри самого RDP сеанса проверять GetLastInputInfo. насколько понял не пойдет... т.к. против самого факта простоя никто не возражает. конфликт из-за причин простоя - работодатель говорит "вы ни хрена не делали", работник "так не мог, окно RDP висело, даже мышка не двигалась"... "пришлось зарубиться в дьяблу вне окна" (это уже мысленно). ну типа так.
-
> sniknik © (20.07.16 09:52) [26]
да
Единственное что понятно: Случай WTSDisconnected, понятно все, и надо клиента перекинуть.
Если нет ввода (входящих фреймов(или байтов)), то юзер ничего не делает или свернул окно или повисло. А факт "повисло" опять не определен.
Случай нет ввода (юзер ничего не делает) - ну, такое может быть, если он перекрыл окно справочником и ищет что ответить клиенту. В т.ч. на своей реальной машине(на сайте через браузер, например, ищет в ЧаВо)
факт плохого коннекта, плохого коннекта. Как определить частоту обновления окна RDP, или аналогичное в терминах rdp
>> NoUser © (19.07.16 18:29) [20] видел. Не ответил, т.к. это аналогичное "внедрить стукача" на реалку. Не, не пойдет. Во всяком, пока не выжму все "по-честному" из API
-
Запустить торрентов что ли на 5 фильмов.. забить весь канал и посмотреть всякие замеры..
-
бессмысленно все это. и заниматься этим не надо.
-
> ВладОшин © (20.07.16 10:35) [27]
Можно сварганить rdp-proxy и там задавать SIO_KEEPALIVE_VALS а на десктопе крутить простенькую анимацию (менять картинку), если свернуто, отсылки данных не будет, а если 'подвиснет' - получишь разрыв.
> [28] подключись через GPRS ))
-
в общем, нашлась причина наверное 95% процентов.. Если юзер сидит не из под Windows, а из под Линукс через некий free-rdp клиент, цепляется на win, то например, происходит так, что связь порвалась, а free-rdp не показывает это. т.е. юзер написал, ждет ответа, связь порвалась, картинка у него не меняется(!), а клиент в это время ответил, и тоже ждет.. Вот такая ерунда, сам видел, юзер заснял монитор - у него все хорошо, а в логе четко написано WTSDisconnected. Проходит время, пока юзер понимает, что связи нет и делает ре-коннект, а клиент уже зол, 10 сообщений кинул и грозит в спортлото пожаловаться..
-
[29]
-
> iop © (25.07.16 18:43) [32]
как анекдот про анекдоты по номерам? ) читаю все, и где-то согласен с [29] но надо понимать, что происходило. Хотя бы так, не совсем достоверно
|