我正在构建一个需要屏幕共享功能的客户端/服务器解决方案。我有一些已经“工作”的东西,但问题是它只能在内部网络上工作,因为我的方法不够快。
我基本上在做的是客户端每 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 秒刷新一次) Obs.:我正在使用 Windows 窗体,它是通过套接字完成的。
TeamViwer 和 .rdp 文件如何工作?