想通过 c#实现远程桌面,类似 teamviewer 那种被远程的机器用户仍然可以控制的, c#自带的 com 组件实现起来与 Mstsc 相同,有个思路是客户端获取截屏发送到服务端,只有一个大概思路,有没有大神指导一下,给个可行的思路或者方法,谢谢。
1
Caskia 2017-02-10 11:48:46 +08:00
2 年前弄过一个玩具,思路 socket 建立链接,发送截图,鼠标坐标, IO 命令,从而实现同步操作。
|
2
yicong135 2017-02-10 22:13:35 +08:00
发图片,效率好低啊
mstsc 这种比较好把,最优就是像 radmin 这种用虚拟显卡驱动来传画面 |
3
ioriwong 2017-02-10 23:46:06 +08:00 via iPhone
3389 就好了
|
4
ihacku 2017-02-11 00:59:18 +08:00 via iPhone
|
5
SlipStupig 2017-02-11 17:28:02 +08:00
@yicong135 rdp 本身就是驱动直接发送位图信息,数据还压过了
远程屏幕实现里面东西很多,又简单的玩法又复杂的玩法,很早前用 C 实现过: 方法如下: 1.把屏幕分为 16*16 方格 2.Hook 鼠标 //窗体事件,当触发的事件的时候,根据消息类型去定位要发送窗体或鼠标事件位于哪个区块范围,发送指令就是, 1 号区块的图像是什么, 2 号区块的是什么....如果没有消息就不传送任何图片保持心跳 3.数据压缩, 7Z 压缩效率和速度都不错 4.位图缓存,每次发送真正图像的时候先发送一个 hash 值,本地如果又相对的位图块就直接从本地填充,而不从远程下载,没有的话就缓存到本地 |