私はvC++でvncクライアントを作成しており、TRLEエンコーディングスキーム用に作成する必要があります。私はTRLE(エンコーディング値= 15)でデータを送信することができる私のサーバーとしてタイトなvncまたは実際のvncを使用しています。私はRFBとVNCに新しいので、私はどのように私はサーバーから取得しているデータを読み取る(私はサーバーがx、y、w、hとencoding_typeでメッセージタイプ0でそれを送信することを認識している)とデコードデータ。 RFBとデコード技術の実装を理解するために使用できる例はありますか?私は主にZRLE、CopyrectまたはRawのエンコーディングの例をgithubで見つけましたが、その説明は十分にはっきりしていませんでした。RFB/VNCクライアント(C++)(TRLEエンコーディング)
答えて
学問的な練習としてホイールを実装する場合は、RFB protocol specificationを参照して、プロトコルとエンコード/デコードのテクニックを理解する必要があります。
リモートデスクトップビューア(アプリケーション内に埋め込まれている可能性があります)を単純に作成する場合は、プロトコルを再実装するより簡単な方法があります。あなたがWindowsを実行していると仮定すると、単に外部プロセスとしてビューアを起動し、メインウィンドウのハンドルHWNDをつかみ、SetParentを使って自分のアプリケーションの子ウィンドウにすることができます。ほとんどの視聴者は、サーバー/ポートに接続するためのコマンドライン引数を受け入れます。
多くのリベラルなライセンスの下で(視聴者または静的/動的リンクライブラリとして)利用可能な多くの実装が既に存在します。そのうちのいくつかは、ソース形式で利用可能であり、彼らが復号部
私は見つけることができるいくつかを記述したコードでいくつかのコメントを持っている可能性のあるです:
- TightVNC
- UltraVNC
- ありませんC++、それでも便利VNCSharp
- TigerVNC
- libVNCServer/libVNCClient
ビットのGoogle検索thisにつながった。
サーバーは、(クライアント)が受信できるサーバーに伝えるエンコードのデータのみを送信します。 TRLE(15)は十分に文書化されていないので、SetEncodingsメッセージから削除して、よりよく文書化された他のプロトコルを使用することができます。
RFBプロトコルのための最高の(生活)のドキュメントはこちらです:これは、現在、2009 https://www.mail-archive.com/[email protected]/msg00235.html
からこのパッチなどの任意TRLEのマニュアルを参照して、欠落している(2017年9月)
https://github.com/rfbproto/rfbproto
ですクライアントからサーバへのSetEncodingメッセージは、クライアントが理解できるプロトコルのリストであり、優先的な選択の順番である。 RAWデータは常に使用できますが、ほとんどのデータが使用されます。
経験から、最良のBang-for-the-thes圧縮を実装する最も簡単な方法は、ほとんどのすべてのサーバーまたは同様のZLIB(6)でサポートされている未処理の長方形のZRLE(16)です。
接続しているサーバーがTRLEのみをサポートしていて、それ以外の場合は非常に奇妙ですが、その場合でも「ただのRAW」データを要求できます。
- 1. Akka httpクライアント - URIエンコーディング
- 2. URLエンコーディングc#不一致エンコーディング
- 3. C++ UTF8エンコーディング
- 4. Cinemagraphエンコーディング(C++)
- 5. C#Xmlエンコーディング
- 6. C/C++エンコーディングの質問
- 7. クライアント側の文字列エンコーディングjava
- 8. クライアント側URLハイパーリンク内のクエリパラメータのエンコーディング
- 9. Zend_SoapクライアントとSoapServer UTF-8エンコーディングの問題
- 10. writeToFileとエンコーディング(objective-c)
- 11. エンコーディングC#とJavaスクリプト
- 12. Objective-CのBase64エンコーディング
- 13. C#、UTF-8、エンコーディング文字
- 14. C# - 韓国語のエンコーディング
- 15. ICU C++エンコーディングの変換
- 16. 目的C文字列エンコーディング
- 17. C#HttpClient FormUrlEncodedContentエンコーディング(VS 2012)
- 18. C#サービスクライアント - 転送エンコーディング:チャンク
- 19. Connector/CのMySQL文字エンコーディング
- 20. C++ REST SDK( "Casablanca")のURIエンコーディング
- 21. C#StringWriterエンコーディングの問題
- 22. JavaのUTF-16エンコーディングとC#
- 23. C#/ C++クライアント - サーバーアプリケーション
- 24. ジャージーRESTクライアントでコンテンツタイプ/エンコーディングを設定する
- 25. キャッチされないにSoapFault例外:[クライアント] SOAP-ERROR:エンコーディング:オブジェクトが
- 26. Jersey2クライアント:エンコーディングなしで予約文字を使用
- 27. CXFクライアントでSOAP応答のエンコーディングを設定する方法は?
- 28. REST API Javaエンコーディングでのクライアントの応答の問題
- 29. C++ kafkaクライアント(rdkafka)
- 30. C#XML RPCクライアント
洞察に感謝します。はい、TRLEはあまりよく文書化されていません。クライアントサーバーの開発に成功している間は、イメージストリームをデコードするために使用されるfor-loopの数のために使用するのが面倒です。 TRLEを実装する際の私の最大の問題は、カラーパレットのデータを理解することと、それがなぜ必要なのかということでした。これはまだどこのドキュメントパッチでも提供されていません。私は確かにzrleに私の手を試してみるだろう.. vncを開発した人々と私の個人的なコミュニケーションごとに、zrleはリモート接続のためのより堅牢なようです。 –