2009-10-03 5 views
0

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

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

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

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

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

+0

Добро пожаловать в Переполнение стека. Этот вопрос лучше подходит для http://serverfault.com, поэтому я проголосовал за его перемещение. После голосования пять человек автоматически переместятся. –

+1

Не уверен в этом. Не является ли serverfault об управлении ИТ? Это проблема развития. Используя Wireshark, я подтвердил, что XenServer удаляет соединение после изменения размера. Я также обнаружил, что нет значения тайм-аута, установленного в потоке, который использует VNCsharp. – RAVolt

ответ

0

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

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