Ранее я писал в блоге о , как здесь работает программное обеспечение для удаленного обмена экранами , оно не относится к C #, но дает хорошее фундаментальное понимание по теме.В этой статье также приведена ссылка на спецификацию удаленного буфера кадров, о которой вы, вероятно, захотите прочитать.
По сути, вам захочется делать снимки экрана, и вы можете передавать эти снимки экрана и отображать их на другой стороне.Вы можете сохранить последний снимок экрана и сравнить снимок экрана в блоках, чтобы увидеть, какие блоки снимка экрана необходимо отправить.Обычно вы выполняете какое-то сжатие перед отправкой данных.
Чтобы иметь дистанционное управление, вы можете отслеживать движение мыши, передавать его и устанавливать положение указателя на другом конце.Также то же самое о нажатиях клавиш.
Что касается сжатия в C #, вы можете просто использовать JpegBitmapEncoder для создания снимков экрана со сжатием Jpeg с требуемым качеством.
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.QualityLevel = 40;
Для сравнения файловых блоков вам, вероятно, лучше создать хэш для старого и нового блоков, а затем проверить, совпадают ли они.Для этого вы можете использовать любой алгоритм хэширования .