今天和大家聊一聊如何实现一个远程桌面程序。
关于远程桌面
对于远程桌面程序,相信大家一定有所了解。
常见的产品有TeamViewer,向日葵,微软远程桌面,QQ远程桌面等等。
远程桌面能够在定位用户问题,协助操作,远程办公上有非常便捷作用。
这里我们就来自己实现一个远程桌面程序。
需求分析
对于一个远程桌面程序,我们要解决的问题主要有三点:
- 获取桌面流——没有桌面流,怎么做远程桌面
- 传输数据——包括桌面流以及键盘鼠标等信息
- 传输控制信息——建立连接,断开连接等
这里需要注意的点是第二点传输数据。
远程桌面一个重要的质量指标是实时性。需要控制端对被控制端的操作能够及时得到响应。
试想一下,假如你在帮用户远程时,打开一个文件夹要3s之后才能在控制端看到结果,你的工作效率可想而知。
技术选型
webrtc
对于实时性的数据流传输,我们首先想到的就应该是udp+p2p的方式。
udp没有tcp的握手连接和拥塞处理导致的延时问题。
p2p使用了最短链路进行数据通信。
这里推荐的解决方案是webrtc。
webrtc提供了高效的,流媒体数据的p2p通信方法。几乎是开箱即用。