Почему клиент VNCsharp для удаленной консоли XenServer зависает при увеличении разрешения экрана

Я использую элемент управления VNCsharp .NET для подключения к удаленным сеансам XenServer с использованием их протокола VNC. Этот элемент управления отлично работает, за исключением одного случая, когда разрешение виртуальной машины увеличивается. Например с 800х600 на 1024х768. Средство просмотра консоли в XenCenter отлично справляется с этой ситуацией!

В этом случае создается впечатление, что XenServer прекращает отправлять обновления экрана. Тем не менее, я подключил Wireshare, и ясно, что пакеты все еще отправляются моему клиенту. Я проверил, чтобы убедиться, что VNCsharp обрабатывает граничные условия (изменения потока), и все выглядит нормально. Если время запроса разрешения истекло, экран снова заработает, когда Windows вернется к исходному разрешению.

Если я прерву соединение и снова подключусь, клиент с радостью отобразит новое разрешение.

Я подозреваю, что есть какой-то сигнал сброса, который мне не хватает. Есть ли что-то в VNC RPC по этому поводу? Если да, то я не смог найти.

Предложения?


person RAVolt    schedule 03.10.2009    source источник
comment
Добро пожаловать в Stack Overflow. Этот вопрос лучше подходит для serverfault.com, поэтому я проголосовал за то, чтобы переместить его туда. После того, как пять человек проголосуют, он переместится автоматически.   -  person Greg Hewgill    schedule 04.10.2009
comment
Не уверен в этом. Разве serverfault не связан с управлением ИТ? Это вопрос развития. Используя Wireshark, я подтвердил, что XenServer разрывает соединение после изменения размера. Я также обнаружил, что для потока, который использует VNCsharp, не установлено значение времени ожидания.   -  person RAVolt    schedule 04.10.2009


Ответы (1)


Я решил эту проблему, но это похоже на взлом. Мне пришлось добавить тайм-аут потока (5 секунд) к вызову ReadByte. Хост сбрасывает поток, а клиент его не обнаруживает.

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

person RAVolt    schedule 10.10.2009