2009-10-03 3 views
0

J'utilise le contrôle VNCsharp .NET pour joindre des sessions XenServer distantes en utilisant leur protocole VNC. Ce contrôle a bien fonctionné sauf pour un quand la résolution de la VM est augmentée. Par exemple de 800x600 à 1024x768. La visionneuse de console dans XenCenter gère cette situation très bien!Pourquoi le client VNCsharp d'une console distante XenServer se bloque-t-il lorsque la résolution de l'écran augmente

Dans ce cas, il semble que le XenServer arrête d'envoyer des mises à jour d'écran. Cependant, j'ai connecté Wireshare et il y a clairement des paquets encore envoyés à mon client. J'ai vérifié pour m'assurer que VNCsharp manipule les conditions de frontière (changements de flux) et cela semble CORRECT. Si la demande de résolution expire, l'écran fonctionnera à nouveau lorsque Windows reviendra à la résolution d'origine.

Si je supprime la connexion et me reconnecte, le client affiche la nouvelle résolution.

Je soupçonne qu'il y a un signal de réinitialisation qui me manque. Y a-t-il quelque chose dans le RPC VNC à ce sujet? Si oui, je ne pouvais pas le trouver.

Suggestions?

+0

Bienvenue dans Stack Overflow. Cette question est mieux adaptée pour http://serverfault.com donc j'ai voté pour le déplacer là. Après cinq votes, cela se fera automatiquement. –

+1

Pas sûr à ce sujet. Serverfault n'est-il pas une question de gestion informatique? C'est un problème de développement. En utilisant Wireshark, j'ai confirmé que XenServer abandonnait la connexion après un redimensionnement. J'ai également constaté qu'il n'y a pas de valeur de délai d'attente définie sur le flux utilisé par VNCsharp. – RAVolt

Répondre

0

J'ai résolu ce problème, mais cela ressemble à un hack. J'ai dû ajouter un délai d'attente de flux (5 secondes) à l'appel ReadByte. L'hôte supprime le flux et le client ne le détecte pas.

Afin de garder le timeout de tir en raison de l'inactivité, j'ai dû ajouter un thread keepalive qui envoie un mouvement de souris si le client est inactif. Je pense qu'il y a une façon plus élégante de garder la vie en vie, mais ça marche pour l'instant.

Questions connexes