2

シンプルなP2PRDPクライアントとサーバーをPythonで作成したいと思います。これが私がそれをスケッチした方法です。

  1. 短い間隔でスクリーンショットを撮る
  2. それらを圧縮してサーバーアプリケーションに送信します
  3. サーバーアプリケーションからキーボード、マウスイベントを取得します。それらをシリアル化し、クライアントに送信します。クライアントはそれらのシリアル化を解除し、SendInput呼び出しを使用してそれらを反映します

そして私が知る必要があるのは

  1. ジョブを簡素化するために使用できるrdpライブラリがPythonに存在しますか?
  2. Pythonでサーバーオペレーターからキーボードまたはマウスイベントを取得するにはどうすればよいですか?
  3. イベントをシリアル化する最も簡単で簡単な方法は何ですか?
  4. Mouseeventの相対的なX、Y座標を測定するにはどうすればよいですか?
  5. わかりやすい例を教えてください。
  6. そして最後の質問ですが、両方のプラットフォームでMicrosoft派生OSを使用している場合は、.netで実行する方が簡単です。それは本当ですか?

クライアントアプリケーションはWindowsXP、Vista、7で実行され、サーバーアプリケーションはWindows / Linuxで実行されます。また、何か足りないものがある場合は、その旨をお知らせください。

4

3 に答える 3

1

少し前に、私はeasyrfbと呼ばれるものを書きましたが、これもpython-vnc-viewerに基づいていますが、公開したことはありません。それはあなたが尋ねたことを正確にカバーしていませんが、それは非常に似ています。お役に立てば幸いですが、その一部はhttp://hydra.geht.net/easyrfb/にあります。

ファイルは私の作業コピーに直接リンクされているため、そこにあるファイルは常に作業状態にあるとは限らないことに注意してください。しかし、私は頻繁に編集していません。

GitHubでも利用できるようになりました:https ://github.com/hilbix/pyrfb/tree/easyrfb

これは私の側でそれがすることです:

  • ローカルで実行されているXvncに接続します(技術的には、どのVNCサーバーでも可能です)
  • 現在の画面コンテンツを高度に圧縮されたtest.jpgに継続的に書き込みます
  • 一部のWebページは、AJAXを使用してそれを取得し、画像を更新します
  • その画像のマウスクリックは、マウスクリックとしてVNCサーバーに転送されます
  • フォームを使用してキーボード入力をシミュレートできます
  • そして、ロスレスPNGスクリーンショットを撮ることができます
  • PNGスクリーンショット(テンプレートと呼ばれる)に基づいてあいまいマッチングを行うためのedit.htmlがあります
  • シェルスクリプトは、そのようなテンプレートが一致するかどうかを確認したり、一致するのを待つことができます。

内部通信はTCP、Unixソケット、およびいくつかのファイルを使用して行われるため、すべてのコンポーネントが異なる場所で実行されるように変更することは難しくありません。

  • VNCサーバー(表示する画面)
  • rfbimg.py(これはVNC->イメージを実行し、コントロールを提供します.sock
  • シェルスクリプト(必要に応じて、sendsock.py通信に使用.sock
  • スタブ(コマンドをに転送する)を備えたWebサービス(AJAX、およびイメージ)GET.sock
  • 制御するWebクライアント(任意のブラウザー、lynxまたはtelnet実行可能)

ドキュメントを求めないでください! ソース、ルークを使用してください!

メンタルヘルス警告!全体像は、大きくて醜い成長した頭痛を誘発する顔の手のひらの山であり、ほとんど無関係なランダムに配置された複雑なスクリプトのビットを作成し、間違った誤解を招く名前、汚れたコピー、コメントされていない未完成のハーフエディット、すべてが1台のマシンにハードコーディングされていますおそらく、アップグレードされていないパッケージ、またはさらに古いものに対して、文書化されていないローカルの10年前の微調整が必​​要です。だから私はすべてを配るわけではありません。(そして、これがおなじみのように聞こえても、いや、私はマイクロソフトで働いていません。)

于 2011-08-07T20:38:12.550 に答える
0

「Pythonで」とは別に、別のVNCを再発明しているように聞こえます。最新の派生物のほとんどは、オープンソースであるTightVNCに基づいています。VNCコード(C ++)とそれが使用するRFBプロトコルを理解できれば、すべての質問に答えることができます。

このVNCクライアントのPython実装も興味深いかもしれません。ただし、そのページのコメントに注意してください。

それは何のために良いですか?何もありません;-)パフォーマンスを向上させるために元のVNCビューアを使用してください。

たぶん、何らかの方法でVNCテクノロジーを再利用することで、目標を達成できますか?(たとえば、VNC C ++コードのPythonバインディングを作成したり、RFBプロトコルを使用して、既存のVNCサーバー/クライアントと相互運用できるようにしたりしますか?)

于 2011-03-21T23:00:52.023 に答える
0

このGitHubのコメントに従って、Pythonでlibfreerdpviaを使用できます。ctypes

参照:GitHubのFreeRDPライブラリ

FreeRDPは、無料のリモートデスクトッププロトコルライブラリおよびクライアントですhttp://www.freerdp.com/

于 2018-01-07T06:12:22.263 に答える