0

VNC サーバーと通信するために自分のソフトウェアで実際に RFB プロトコルを再コーディングしているときに問題があり、サーバーのデスクトップ サイズのサイズを取得する方法を知りたいです。serverInit メッセージ内の framebuffer_width を既にテストしていますが、デスクトップのリール サイズを表していません。取得方法がわかりません。

2 番目の質問は、PointerEvent メッセージをサーバーに送信することです。マウスを移動するには、実際に私のソフトウェアでマウスの x と y を位置 {0, 0} に設定しました。これを VNC サーバーに送信すると正常に動作しますが、x 位置に 5 を追加すると動作しません。 t move 5 pixel 必要以上に大きく移動します。理由がわかりません???? 私を助けてくれませんか?

ご回答ありがとうございます。

4

1 に答える 1

2

両方の問題は、クライアントのスケーリングの問題である可能性があります。

あなた自身の質問に答えるのに役立つかもしれないいくつかの質問 (決定的な答えが必要な場合は、より多くの情報を投稿する必要があるため):

  • デスクトップの実際のサイズが、serverInit メッセージで幅として送信されたものではないことをどのように判断していますか? おそらく、VNC サーバーを起動していて、サーバー上の現在のデスクトップと同じサイズを使用していると想定していて、実際には異なるデフォルト サイズで起動している可能性があります。*nix システム上の VNC サーバーでは、VNC サーバーは通常、メイン デスクトップとは別のデスクトップとして実行され、サイズは必ずしも同じではありません。
  • serverInit の幅と pointerEvent の x と y の位置を 16 ビット値として扱っていることは確かですか?
  • ServerInit の後に DesktopSize 疑似エンコーディングを (広告して) 取得していますか? 接続後にサーバーがフレーム バッファ サイズを変更している可能性があります。
  • クライアントの実装に使用している言語/フレームワーク/など。レンダリング関数が何らかの形でスケーリングされていないことは確かですか?

ところで、私は公式の RFB ドキュメントがやや欠けていることを発見しました。これらのリンクは RFB の参照に適していると思います。

于 2010-11-07T20:52:29.350 に答える