草庐IT

实测办公场景下,国产远程控制软件的表现力如何?(技术解析)

码农飞哥1024 2023-03-28 原文

 1、工作生活小助手

大家好,我是码农飞哥,作为一个常年混迹职场的老码农。我在工作和生活中碰到了很多问题,也帮助别人解决了很多问题。前有帮实习生配环境,后有帮同事调BUG,中间还有教老爸如何使用手机。

新冠疫情反反复复的当下,居家办公变成了打工人的新常态。大家都在自己家里办公,不能进行面对面交流,碰到了棘手的BUG时就只能自己默默的承受或者通过电话跟同事进行沟通,沟通的效率和成本还是比较高的。上次居家办公时组里新来的实习生就被一个BUG搞的焦头烂额,百度以及线上沟通了好久都没解决,最后还是我通过远程调试的方式给他解决了问题。

我过年的时候给老爸买了一部全新的安卓手机,但是新手机诸多繁杂的设置经常让老爸犯难,他常常问我:儿子,怎么关掉手机的消息通知?儿子,怎么将手机的字体放大呢?诸如此类的问题,刚开始我都是通过电话或者视频的方式告诉他什么功能怎么怎么使用,但是这种方式往往事倍功半,往往说了半天老爸还是不知道怎么操作。后面我通过远程控制软件直接远程给老爸进行设置,解决问题的效率瞬间提升了N倍。

这里就要隆重请出本文的主角:远程控制软件:远程控制技术顾名思义就是在网络上通过由一个终端(包括电脑,手机,平板等)去远距离控制另一个终端(包括电脑,手机,平板等)的技术。而远程控制软件就是可以实现远程控制技术的应用。我前前后后使用了好几款远控软件,有向日葵,有ToDesk,兜兜转转好久最终发现还是ToDesk更香一点。

2、实测反馈-ToDesk与向日葵远程控制对比

2.1. 环境以及软件版本

准备一台笔记本电脑(PC),一个安卓平板,一部手机(苹果或者安卓手机),分别在电脑和平板上上安装ToDesk的客户端,以及向日葵的客户端(如果平板作为主控,向日葵还需要在平板上安装一个独立的主控端具体的软件版本如下:

软件

版本

ToDesk Android客户端

4.4.6.2

ToDesk macOS客户端

4.3.0.1

向日葵 for Mac

v12.5.1.46673

向日葵 for Android 控制端(主控)

V12.0.0

向日葵 for Android 客户端(被控)

V6.3.1

2.2. 强大的免费版

作为一款远程控制软件,远控体验的好坏直接决定了用户的留存度。而评判远控体验,行业内有

五大公认的指标,分别是:分辨率、帧率、延时、抖动、丢包率。

  1. 分辨率决定了图像细节的精细程度,分辨率越高则画面越清晰。
  2. 帧率决定了远程时画面是否流畅。
  3. 延时反映了远控中的延迟情况。
  4. 网络抖动指的是延时忽大忽小,是影响实际体验的关键指标。
  5. 丢包率比较高的话就会造成画面卡顿或是损坏。
下面就分别测评一下ToDesk以及向日葵的以下功能:1. 平板远控PC,2. 手机远控平板(手机),3. 文件传输。

2.2.1.  平板远控PC

随着移动办公的兴起,越来越多的人会通过平板进行办公,会通过平板来远控公司电脑进行办公,或者如果公司电脑不在身边的话也可以通过平板远控公司电脑来解决问题。

ToDesk和向日葵都支持跨平台远控,不过向日葵是将控制端和客户端严格区分开来的。当一个手机既需要充当控制端又需要充当客户端时,就需要同时安装控制端和客户端两个APP。

而ToDesk则是将控制端和客户端合二为一,这样就省心多了。

  1. ToDesk
    安装好ToDesk的客户端之后,打开此客户端会显示设备代码和临时密码。


分别打开平板和PC上的ToDesk,平板远控PC不需要进行登录。只需要在平板上的ToDesk上输入被控的PC的设备代码以及连接密码即可实现平板远控PC(注:但为个人安全性考虑,建议如果使用的临时密码,可在安全设置中设置为每次发起连接后更新;或者直接使用安全密码更好)。



远控成功之后,就可以在平板上看到被控PC的画面。

在侧边栏可以看到ToDesk 提供了键盘,快捷键,触屏模式,指针模式,鼠标设置,隐私屏等功能,其中操作模式分别是指针模式和触屏模式,默认情况下使用的是触屏模式。指针模式主要用于有鼠标的情况下可以使用。键盘则提供了输入能力可以向被控端输入文字。

中间的那个鼠标是虚拟鼠标,最新的4.4.6.2版本的安卓客户端中对虚拟鼠标进行了全面升级,虚拟鼠标显示更直观、键鼠操作更加贴合用户使用习惯。可以像真实的鼠标使用滚动滑轮对页面进行上下滚动,同时可以进行左右键操作,如下图所示,进行点击右键唤起右键操作栏。



下面是演示通过平板远控PC之后,拖动网页的情形,整体体验下来,操作比较流畅,画面比较清晰:



  1. 向日葵
向日葵客户端在弱网的情况下经常会出现终端连接不上服务器的情况,如下图所示,虽然它支持失败重试,但是体验始终没有那么友好。这一点ToDesk做的会比较好些,在弱网的情况下同样可以快速连上服务器。


与ToDesk不同的是,向日葵使用平板远控PC时,要求控制端和被控端需要用相同账号登录,登录之后在控制端选择【远控一台电脑】,输入被控端的设备代码以及连接密码即可进行远控。

远控成功之后在控制端的界面如下图所示:

中间的部分是向日葵的虚拟鼠标,它可实现左键,右键以及鼠标上下滚动的效果,滚动效果没那么便捷,右侧是其他的功能菜单,向日葵支持屏幕录制以及截图功能:。

最终的演示效果如下图所示:

  1. 对比

ToDesk

向日葵

分辨率

分辨率高

分辨率高

画面流畅度

流畅

较流畅

操作简易度

简单

较复杂

是否需要登录

不需要登录

需要登录

延时

延时低

弱网延时高

功能

不支持屏幕录制,截图

支持屏幕录制,截图

小结:

整体对比可参考上图,另外个人觉得ToDesk的虚拟鼠标操作要比向日葵的虚拟鼠标操作便捷一些。

2.2.2. 手机远控平板(手机)

体验完了平板远控PC之后,接下来我们来体验下手机远控平板(或手机)。

  • ToDesk
为了降低安全风险,需要在控制端和被控端都需要登录同一个账号。当用手机远控平板时,需要在平板上开启【允许远程本设备】选择【控制模式】,并且需要开启辅助功能权限,其他的权限可按需开启。

在控制端和被控制端登录相同的账号之后,在控制端的ToDesk上输入【被控设备的编号】以及连接密码即可顺利远控平板(或手机)。


目前,ToDesk 通过手机远控平板整体操作比较丝滑,它可以实现免Root远控安卓手机,IOS系统的手机暂不支持。

  • 向日葵
首先,在主控手机上安装控制端,在被控平板上安装客户端。并且控制端和客户端要登录相同的账号。


当我兴高采烈用向日葵的控制端扫描向日葵的客户端进行登录时,结果一个弹框提示我接下来进入了付费环节。



鉴于要付费,所以没能体验成功。但向日葵除了可以远控安卓系统外,还可以搭配向日葵UUPro这一硬件后,远控ios系统。

2.2.3. 文件传输

这里采用PC控PC的方式来测试文件传输。

向日葵和ToDesk精心设计文件传输管理器,不需要下载第三方的软件传输,就像Windows文件夹一样,可以实现文件的拖拽,复制粘贴传输。

  • ToDesk

  • 向日葵


传输一个相同大小的文件,ToDesk明显要比向日葵快。这是由于ToDesk引入了SD-WAN技术优化网络的传输,同时在全国范围内部署了超过200个服务器节点,下一章节会详细介绍。

2.2.4. 更多功能期待你的使用

除了上面介绍的常用功能以外,ToDesk以及向日葵均支持远程打印、远程开机、隐私屏等。其中隐私屏就是让被控端进入锁屏状态,从而防止信息泄漏。两者的主要区别是ToDesk在免费版提供了隐私屏,而向日葵只在付费版才提供隐私屏。


另外,关于很多小伙伴关心的远程开机问题,ToDesk和向日葵均支持远程开机,ToDesk开机方式为在同一个局域网内有任一台设备在运行ToDesk的情况即可;向日葵可以购买他们自家的硬件产品控控A2,来搭配实现远程开机。

不过说实话,其实我周围小伙伴远程开机都直接用某家智能插座+电脑设置Bios来电唤醒就可以了,也不用再单独购买额外硬件或者区域内设置一台运行设备。推荐小伙伴们也使用这个方法。

2.2.5 小结

通过前面的测评我们可以得出如下结论:同样是个人免费版,向日葵的功能点要比ToDesk更加丰富一点,向日葵支持软件内屏幕录制以及截屏,ToDesk目前暂不支持。但是在画质和操作的流畅度上,ToDesk还是更强一点,在弱网的情况下,向日葵客户端经常会出现连不上服务器的情况,而ToDesk则可以快速连接,下面就简单对比下两者的定价以及功能介绍。

ToDesk的定价明细以及支持功能:



ToDesk的免费版支持安卓端免root被控,手机投屏,远程开机,跨平台连接,隐私屏等常用功能,基本上满足了日常的工作需求。

向日葵的定价明细以及支持功能:



向日葵的个人免费版功能相对简单,它仅支持电信网络,不支持跨运营商,只能进行简单的远程桌面以及基础的文件传输。

插一句题外话,某天我在CSDN上搜索ToDesk的介绍和使用帖子的时候,竟然还搜到了ToDesk企业版在CSDN上的账号,抱着兴趣领取了企业版14天账号注册试用了一下,连接感觉确实会更快更稳,也有批量部署、录屏功能提供,而且还支持后台员工的权限管理和连接记录,也不怕员工删库跑路了(哈哈)。

3、ToDesk硬核技术解析

因为后面工作中一直用ToDesk作为常备远控软件了,作为偏好产品,飞哥此篇会专门来解析下ToDesk使用的技术。

之所以能够在诸多竞品中脱颖而出,归根结底还是得益于ToDesk有诸多硬核技术。

远程桌面,本质上就是将桌面进行连续截屏、编码压缩,经网络传输后,再解码还原成画面的过程。如下图所示:


这个完整的流程中可以看出:ToDesk通过高效编解码技术提升画面的处理速度与画质;通过SD-WAN技术来保障最优网络路线;通过采用RTC技术则更多的聚焦传输协议和弱网对抗,从底层提升传输性能。

下面就分别对这三种技术做一个简单的介绍。

3.1. 高效编解码技术

ToDesk的视频编码器采用静态场景优化策略,用智能算法合并处理整片的同色像素点,经合并之后,大幅减少需要处理的数据量,从而缩短处理时间并降低贷款占用,消除了空间冗余(静态画面中像素间的相同性造成的冗余)。


ToDesk只传输有变化的区域,可以大幅减少传输数据量。我们将一系列画面分为独立帧(称作I帧)和预测帧(称作P帧)。I帧会传输所有信息,可以解码出完整画面;P帧只传输前后画面之间的差别,需要参考前一帧画面来拼出完整画面,但数据量只有I帧的几百分之一。


一个I帧和多个P帧就构成了一组连续画面。就像是火车,I帧是车头,P帧都是接在车头后面的多节车厢。ToDesk通过图像算法优化,可以让一个I帧拖更多P帧,进一步降低5ms编码延时。

高效的编解码技术使得编解码更快,端到端延时更低。

3.2. SD-WAN技术

OTT SD-WAN(Over-The-Top Software-Defined WAN),即顶层软件定义广域网,OTT SD-WAN 就是在运营商网络之上搭建一个统一平台,解决应用层的互联互通问题。


ToDesk SD-WAN 目前在全国部署的机房数量已经超过200个,覆盖密度远远高于传统远控厂商。从而实现了对机房节点的有效调度。

此外,ToDesk SD-WAN采用"核心-中层-边缘" 三层组网架构,信息高效共享,且骨干节点间专线直连,进一步降低传输延时。


正因为有超过200个分布广泛的中转节点,使得千万终端可以通过实时探测的方式,定时向节点机房发送探测信号,并选出最快速的接入点。


基于实时探测到的信息,ToDesk SD-WAN进行全局计算,选出最佳接入节点和最佳转发路线。


3.3. RTC技术

ToDesk通过在远程控制领域引入RTC技术大幅度提升了网络吞吐量和弱网对抗能力。从而使得ToDesk远程控制可以做到操作更丝滑、画质更高清、传输更流畅,真正做到了远程操作宛如本机。

RTC(Real Time Communication)源自实时高清直播,使用高效的RTP传输协议,并利用RTT采样、Kalmen-Filter、Jitter Buffer、HARQ算法来缓解网络波动,确保数据快速、稳定、准确地传递:

  1. 在整个传输过程中使用RTP协议提升传输速度和可靠性
  2. 被控端编码好的数据发出时:RTC会预测路线拥塞状况、控制发包速度,确保数据有序、顺畅地进入网络
  3. 主控端接收到数据时:RTC将数据包正确排列,通过多重算法减少抖动丢包,确保数据完整无误地进入解码器
4、总结

远程办公已经是大势所趋,远程控制作为远程办公不可或缺的一环,必将进入发展的快车道。远控的需求已经逐渐变成了生活中的刚性需求。

体验了两款常用的远控软件:ToDesk和向日葵。整个体验下来,向日葵相对而言功能更加丰富,它的屏幕录制和截屏功能还是蛮实用的。但个人觉得在个人免费版上,ToDesk的优势会更突出一些,它遍布全国的网络节点以及高效的编解码技术使得其画质更加清晰,操作更加流畅。同时它的SSL+ ChaCha20 and Poly1305 端到端加密技术也有保证了控数据的传输安全性。当然如果能像向日葵一样,再多提供一些辅助功能就更好了。

希望国产品牌都能不断精进打磨自家产品,能为用户带来更好更顺畅的远控体验。



有关实测办公场景下,国产远程控制软件的表现力如何?(技术解析)的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐