画面共有機能が必要なクライアント/サーバー ソリューションを構築しています。すでに「機能している」ものがありますが、問題は、私の方法論が十分に高速ではないため、内部ネットワークでのみ機能することです。
私が基本的に行っていることは、クライアントがサーバーに 5 秒ごとに画面イメージを要求する要求を行うことです (たとえば)。そして、これは、このリクエストが受信されると処理されるコードです:
private void GetImage(object networkstream)
{
NetworkStream network = (NetworkStream)networkstream;
Bitmap bitmap = new Bitmap(
SystemInformation.PrimaryMonitorSize.Width,
SystemInformation.PrimaryMonitorSize.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bitmap.Size);
g.Flush();
g.Dispose();
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
byte[] array = ms.ToArray();
network.Write(array, 0, array.Length);
network.Flush();
ms.Dispose();
}
私がやろうとしていることを行うための最良の方法は何ですか? 少なくとも 0.2 FPS を取得する必要があります (5 秒ごとに更新)。観察: Windows フォームを使用しており、ソケットを介して実行されています。
TeamViewer と .rdp ファイルはどのように機能しますか?