使用java和qt开发远程控制系统-设计方案

该文详细描述了一款远程控制软件的设计流程,包括识别码和验证码的生成、心跳包维持连接、控制与被控制端的交互过程。重点讨论了如何确保安全性和稳定性,如通过验证码确认身份,使用心跳包保持会话活跃,以及建立和断开控制连接的管理策略。
摘要由CSDN通过智能技术生成

参考现有的远程控制软件,APP打开以后,首先会生成一个识别码和验证码,控制方通过这两个码进行远程控制。

       设计思路:

Step1:APP启动,读取CPU或者硬盘序列号,作为本机识别码,发送请求至服务器。

Step2:服务器端接收到请求,获取识别码,去数据库查询这个识别码是否存在,如果存在,查找并返回数字识别码和验证码。如果不存在,按照3位随机+5位id的方式生成识别码和验证码,并返回。

Step3:用户点击刷新验证码,发送请求到服务器,服务器生成新的验证码并返回

Step4:考虑到客户端打开,可能长时间不会控制或者被控制,相当于长时间处于空闲状态,因此考虑使用每隔1秒活2秒向服务器发送心跳包的方式,来获取链接请求数据。

Step5:控制端输出被控端的识别码和验证码,点击控制,发送请求到服务器。

Step6:服务器接收到控制请求,使用识别码和验证码查询被控端信息,如果被控端在线(最后在线时间与当前时间间隔小于2秒),创建一个链接记录,记录控制端识别码,被控端识别码,控制开始时间等,并返回链接ip和端口信息,如果有多个socket端口,可以返回一个连接数最少的,这里目前只考虑一个socket端口一个ip。

其他情况返回被控端不在线,或者验证码不正确,直接返回错误信息。

Step7:控制器发起控制请求,返回数据,如果是成功,那么创建tcpclient,连接至接口返回的ip和端口号,等待被控端链接,发送本机识别码到服务器。

其他情况直接提示

Step8:发送心跳请求(step3),携带识别码,服务器接收到以后,更新最后在线时间,同时查询有没有链接请求,如果有链接记录,返回tcp链接的ip和端口信息,以及控制端识别码。

Step0:被控端在接到心跳返回数据,如果有链接请求,根据返回的信息,链接tcp服务器,首先发送本机识别码到服务器。同时开启线程,发送桌面截图数据,以及接收被控制数据。

Step10:服务器在接到链接请求后,首先读取tcpclient发送过来的识别码,以识别码作为key,存储到全局clientsMap里面。

Step11:当有clients发送数据,根据当前的识别码,查询链接记录,查询到以后,将数据转发到对方client。

Step12:当client断开与服务器的链接,将客户端从clients里面移除。

Step13:开启链接检查线程,每5秒执行一次,查询所有链接记录,如果控制端或者被控端没有在clientsMap里面,直接将这个链接记录删除,或者标记已经结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值