使用Netty+Spring+Swing实现远程桌面控制

本文介绍了使用Netty、Spring和Swing开发远程桌面控制项目的过程,包括三方交互、责任细分、功能层级和关键类设计。通过动态加载命令处理类,实现了UI、命令和网络传输的解耦。项目采用心跳和屏幕截图机制,但面临快速按键响应慢等问题。作者分享了一点心得,并提供了效果演示和GitHub源码。
摘要由CSDN通过智能技术生成

前言

远程桌面控制的产品已经有很多很多,我做此项目的初衷并不是要开发出一个商用的产品,只是出于兴趣爱好,做一个开源的项目,之前也没有阅读过任何远程桌面控制的项目源码,只是根据自己已有的经验设计开发,肯定有许多不足,有兴趣的朋友可以留言讨论与支持。

初现端倪

一般需要远程控制的场景发生在公司和家之间,由于公司和家里的电脑一般都在局域网内,所以不能直接相连,需要第三方中转,所以至少有三方,如下图。

负责中转的第三方是服务器,控制端和傀儡端(被控制端)相对于服务器来说都是客户端,都和服务器直接相连,也就是说控制端不和傀儡端相连。

款款深入

约定:

  • 控制端M(Master)
  • 服务器S(Server)
  • 傀儡端P(Puppet)

为了叙述方便,以下如不做特别说明,M表示控制端,S表示服务端,P表示傀儡端。

如果要达到控制傀儡的目的,应该怎么做呢?三方之间至少要发生什么交互呢?
三方会谈

控制端、傀儡端的接收器和服务器中的转发器都是一个,为便于流程的清晰,分开画了。

责任细分

责任细分

可以看出三者交互主要通过命令形式(命令可以带数据也可以不带数据),发送、转发、接收命令,然后做出相应的动作。
从上图中看到,服务端不仅需要转数据,还需要记录存活的傀儡以及维护控制端和傀儡之间的关系,其实还得处理一些异常情况,比如远程过程中,傀儡断开,过一会又连接上,傀儡是否需要继续给控制端发送屏幕截图。

功能层级图

粗粒度分一下,可以分为三层:Desktop层负责UI处理,CommandHandler层负责命令处理,Netty网络层负责数据的网络传输。

功能层级图

具体来看一下commandHandler层:
commandhandler

CommandHandlerLoader工具类会根据Netty或Desktop层传入的Command到配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值