Я создаю клиент-серверное решение, которое должно иметь функцию совместного использования экрана. У меня что-то уже «работает», но проблема в том, что это работает только во внутренней сети, потому что моя методика недостаточно быстрая.
В основном я делаю то, что клиент делает запрос к серверу, запрашивая изображение экрана каждые 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 кадра в секунду (обновлять каждые 5 секунд) Замечания: Я использую Windows Forms, и это делается через сокеты.
Как работают файлы TeamViwer и .rdp?