2010-11-07 20 views
0

J'ai un problème Je suis actuellement en train de recoder le protocole RFB dans mon logiciel pour communiquer avec un serveur VNC, et je veux savoir comment obtenir la taille de la taille du bureau du serveur. J'ai déjà testé la framebuffer_width à l'intérieur du message serverInit mais ce n'est pas la taille de la bobine du bureau. Je ne sais pas comment l'obtenir.PointerEvent & DesktopSize dans le protocole RFB

Ma deuxième question est d'envoyer un message PointerEvent au serveur. Pour déplacer la souris, en fait dans mon logiciel, je place les x et y de la souris à la position {0, 0}, quand je l'envoie au serveur VNC, ça marche, mais quand j'ajoute 5 à la position x ne bouge pas 5 pixel ça bouge plus gros que ce que je veux, je ne comprends pas pourquoi ???? Pouvez-vous m'aider s'il vous plaît ?

Merci pour vos réponses!

Répondre

2

Il semble que vos deux problèmes pourraient être un problème d'échelle chez votre client.

Voici quelques questions qui pourraient vous aider à répondre à votre question (puisque vous avez vraiment besoin de poster plus d'informations si vous voulez une réponse définitive):

  • Comment allez-vous déterminer que la taille réelle du bureau n'est pas qu'est-ce qui est envoyé en tant que largeur dans le message serverInit? Vous démarrez peut-être le serveur VNC et supposez qu'il utilise la même taille que le bureau actuel sur le serveur et en fait, il commence avec une taille par défaut différente. Avec les serveurs VNC sur les systèmes * nix, le serveur VNC fonctionne généralement comme un bureau séparé du bureau principal et la taille n'est pas nécessairement la même.
  • Etes-vous certain de traiter la largeur serverInit et la position pointerEvent x et y comme des valeurs de 16 bits?
  • Êtes-vous (publicité et) obtenant un pseudo-encodage DesktopSize après le ServerInit? Il est possible que le serveur modifie la taille de la mémoire tampon après la connexion.
  • Quelle langue/framework/etc utilisez-vous pour implémenter le client. Êtes-vous certain que les fonctions de rendu ne sont pas mises à l'échelle d'une façon ou d'une autre?

BTW, j'ai trouvé le official RFB documentation à peu lacunaires et je pense que ces liens sont meilleurs pour référence RFB: