C#实现远程桌面

2017-02-10 11:20:43 +08:00
 xiangpeng

想通过 c#实现远程桌面,类似 teamviewer 那种被远程的机器用户仍然可以控制的, c#自带的 com 组件实现起来与 Mstsc 相同,有个思路是客户端获取截屏发送到服务端,只有一个大概思路,有没有大神指导一下,给个可行的思路或者方法,谢谢。

4336 次点击
所在节点    .NET
5 条回复
Caskia
2017-02-10 11:48:46 +08:00
2 年前弄过一个玩具,思路 socket 建立链接,发送截图,鼠标坐标, IO 命令,从而实现同步操作。
yicong135
2017-02-10 22:13:35 +08:00
发图片,效率好低啊
mstsc 这种比较好把,最优就是像 radmin 这种用虚拟显卡驱动来传画面
ioriwong
2017-02-10 23:46:06 +08:00
3389 就好了
ihacku
2017-02-11 00:59:18 +08:00
SlipStupig
2017-02-11 17:28:02 +08:00
@yicong135 rdp 本身就是驱动直接发送位图信息,数据还压过了

远程屏幕实现里面东西很多,又简单的玩法又复杂的玩法,很早前用 C 实现过:
方法如下:
1.把屏幕分为 16*16 方格
2.Hook 鼠标 //窗体事件,当触发的事件的时候,根据消息类型去定位要发送窗体或鼠标事件位于哪个区块范围,发送指令就是, 1 号区块的图像是什么, 2 号区块的是什么....如果没有消息就不传送任何图片保持心跳
3.数据压缩, 7Z 压缩效率和速度都不错
4.位图缓存,每次发送真正图像的时候先发送一个 hash 值,本地如果又相对的位图块就直接从本地填充,而不从远程下载,没有的话就缓存到本地

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/339509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX