問題タブ [rfb-protocol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - RFB プロトコルの PointerEvent と DesktopSize
VNC サーバーと通信するために自分のソフトウェアで実際に RFB プロトコルを再コーディングしているときに問題があり、サーバーのデスクトップ サイズのサイズを取得する方法を知りたいです。serverInit メッセージ内の framebuffer_width を既にテストしていますが、デスクトップのリール サイズを表していません。取得方法がわかりません。
2 番目の質問は、PointerEvent メッセージをサーバーに送信することです。マウスを移動するには、実際に私のソフトウェアでマウスの x と y を位置 {0, 0} に設定しました。これを VNC サーバーに送信すると正常に動作しますが、x 位置に 5 を追加すると動作しません。 t move 5 pixel 必要以上に大きく移動します。理由がわかりません???? 私を助けてくれませんか?
ご回答ありがとうございます。
client - VNC 接続仲介 (RFB プロトコル サーバー)
次のシナリオを検討してください。
VNC クライアントは、NAT の背後にある VNC サーバーに接続しようとします。
上記のタスクを達成するのに役立つJavaでポートフォワーダーを作成しましたが、正常に動作します。
ここで、どういうわけか、このフォワーダー内にコネクション ブローカリング機能を追加して、VNC クライアントとサーバーの間の通信をインターセプトし、転送ユーティリティ内でも VNC クライアントを認証できるようにする必要があります。
実際には、VNC クライアントから受け取ったパスワードをアプリでの認証に使用していると推測したかもしれません。RFB サーバーはアプリケーション レイヤーで実装できるため、この傍受は可能であると思います。上記のすべての通信で VNCAuthentication (DES 暗号化/復号化) が使用されます。転送ユーティリティ内での認証が成功したら、そのクライアントの転送を続行します。それ以外の場合は、クライアントを閉じます (転送を停止します)。
私はいくつかの実装を試しましたが、rfb サーバーの Java 実装をカスタマイズしようとしましたが、まだそこに到達できません。時間がかかることはわかっていますが、私が正しく考えているかどうかを確認する必要があります.
上記のシナリオの実装があいまいであるか、不可能であるか、または違法であるかどうかを教えてください。これが可能である場合は、いくつかのギルドラインを用意してください...
network-programming - RFB リファレンス実装?
私はRFBサーバーを書いています。RFB リファレンス クライアントを知っている人がいるかどうか疑問に思っていました。
現在、RealVNC を実行し、RFB サーバーに接続するように依頼しましたが、問題なく動作しています。ただし、RealVNC は優れたエンド ユーザー エクスペリエンスを提供することを目的としています。プロトコル機能のすべての可能な有効な組み合わせをテストすることを意図したものではありません。したがって、RealVNC が使用する機能が正しく実装されていることはわかっていますが、RealVNC が使用しない機能がまったく機能しているかどうかはわかりません。でも、どうにか確認できれば本当に助かります。
助言がありますか?
(もちろん、自分自身の RFB クライアントを作成することもできます。しかし、それでは何も証明されません。何かが機能しない場合、それがクライアントなのかサーバーなのか、私にはわかりません。すべてが機能する場合動作しますが、それでも両端が RFB を正しく実装していることを意味するわけではなく、それぞれに同じバグがあるというだけです。)
image-processing - ARGB のピクセル形式データ構造
Java で RFB プロトコル (VNC サーバー) を実装しています。PIXEL_FORMAT
プロトコルで提供されているを理解できません。ピクセル形式のデータ構造の定義は次のとおりです。
RFB プロトコルは各フラグの意味を詳細に定義していますが、生の ARGB 画像の正しい値を決定することはできません。次の値を使用しています。
RealVNC クライアントを使用している間はグレースケール画像を取得し、TightVNC クライアントを使用している間は画像の 4 つの異なるレイヤーを並べて取得します。
適切なエンコーディングを取得するのを手伝ってくれる人はいますか?
html - 単一の GUI アプリケーションに対する RFB または RDP の使用
リモート クライアントがネットワーク経由で表示できる GUI を作成できるようにしたいと考えています。
1 つのアプローチは、HTML5 で GUI 全体をコーディングし、Apache などのサーバーから実行することです。これに関する主な問題は、GUI に少なくとも 1 つ、場合によっては 2 つのウィンドウがあり、ライブ ビデオ ストリーム (音声なし) を含み、ライブ ビデオをHTML5にストリーミングする良い方法がないように思われることです。生きていること。数秒の遅延は許容できません。
もう 1 つのアプローチ (私はすでに行っており、実際にはかなりうまく機能しています) は、GUI をデスクトップ アプリケーションとしてコーディングし (たとえば、Qt を使用)、VNC または Windows リモート デスクトップを使用してデスクトップをリモートで表示することです。これにより、必要な応答性と遅延の欠如が得られますが、1 つのアプリケーションだけでなく、OS デスクトップ全体にアクセスできるという欠点があります。
そこで、私の質問は次のとおりです。RFB (つまり、VNC の基盤となるプロトコル) または RDP (Windows リモート デスクトップの基盤となるプロトコル) を使用して、単一の GUI アプリケーションへのリモート アクセスを提供できるメカニズムまたはフレームワークはありますか?デスクトップ全体?
c - Incorrect color encoding in Remote Framebuffer server
I am working on a simple implementation of a RFB server using "RAW" pixel encoding. I am using TightVNC as my desktop client. I have the code working up to the point where the client is able to request the entire "desktop" which is 640x480 pixels. My test pattern is drawing correctly with regard to shape but the colors are wrong.
I'm trying to use 8 bits per pixel: three red, three green and two blue encoded as RRRGGGBB
in each byte.
My ServerInit packet contains this pixel encoding specification...
The entire structure is defined thus:
Now if I fill my desktop image with 0xe0
(binary 111 000 00
) then I expect this to be interpreted as pure bright red. But it is appearing as a light blue color (as if the 8 individual bits were interpreted backwards!). The shape of my test pattern is correct as I am drawing a few white pixels in the top corner (white is binary 111 111 11
obviously).
I do not understand this. I believe I have followed the algorithm and encoding as it is described in the RFB specification... http://vncdotool.readthedocs.org/en/latest/rfbproto.html#serverinit
What am I doing wrong?
java - スクロール中の VNC クライアント フレームバッファの更新
学校用のオープンソース Android vnc クライアント ( https://sourceforge.net/projects/multivnc/ ) を使用していますが、次のことを行いたいと考えています。
フレームバッファをスクロール/指の移動中に更新したい(スクロールを停止したときではありません)。指を動かすと入力が送信されることはわかっていますが、フレームバッファはスクロールを停止するまで更新を待機します。以下の VNCconn.java ファイルは、VNC のフレームバッファの更新に関与するコードの一部です。プライベート void processNormalProtocol
指を置くと、フレームバッファ全体がフリーズし、スクロールを停止するか、指を離して画面を更新するのを待ちます。
指を下に置いてスクロールを開始すると、コードは次の場所で停止します。
rfb.readServerMessageType();
readServerMessgeType で停止しているため、コードは以下の行に移動して Framebuffer を更新しません。どうすれば更新できるか知っている人はいますか????
この行を削除しようとしました(スクロールしたときにコードがここにスタックしたくないため):
int msgType = rfb.readServerMessageType();
しかし、私はこのエラーが発生します:
コードのロジックに従って、readServerMessageType が rfb.java ファイルに移動し、次に Android スタジオの "DatainputStream.java" と呼ばれる閉じたファイルに移動することを確認できます。ロックされたファイルであるため変更されました:
フレームバッファの更新に関係する VNCConn.java 部分は次のとおりです。
これが rfb.readServerMessageType() であり、 is.readUnsignedByte(); から抜け出すことはありません。スクロールが止まるまで
そして、これは Datainputstream.java を呼び出します (これはロックされており、変更できません)
visual-c++ - C++ の RFB / VNC クライアント (TRLE エンコーディング)
私は vc++ で vnc クライアントを作成しており、TRLE エンコーディング スキーム用に作成する必要があります。サーバーとして、TRLE (エンコード値 = 15) でデータを送信できるタイトな vnc または実際の vnc を使用しています。私はRFBとVNCを初めて使用するので、サーバーから取得したデータをどのように読み取ればよいかわかりません(サーバーがx、y、w、hおよびencoding_typeを含むメッセージタイプ0で送信することを認識しています)およびデコードデータ。RFB とデコード技術の実装を理解するために使用できる例はありますか? ほとんどの場合、ZRLE、Copyrect、または Raw エンコーディングの例が github で見つかりましたが、それらの説明は十分に明確ではありませんでした。