小弟我最近研究Acess anywhere的实现,只是不是太明白其原理,希望各位大虾指教。知道的说一声,不太明白的一起讨论应该如何做?我的一点想法,请各位不要见笑,因为我不知道真正的算法:
1。首先被访问的那台机器要安装一个server,这个server作为代理,执行client的请求,并返回client需要的信息。
2。然后就是另外一个client了,其需要安装一个软件,并连接指定的server,也就是被访问的机器了,client和server之间通过一定的协议通讯(TCP/UDP等等),可以是P2P的,也可能是通过一个服务器中转的。
3。server将其屏幕抓获,以一定算法将数据发送给client,client机器将数据显示出来,并转换一定的屏幕坐标。
4。当你在Client操作或移动鼠标的时候,取得对应的坐标换算到server的坐标,然后再次将client的信息送到server端,并更新server,然后再将屏幕取回来,更新client的屏幕。希望各位给予指教。

解决方案 »

  1.   

    p2p 的屏幕抓获不是那么简单实现的,
    因为数据的不完整性(传输数据用UDP)
    很难是先完全控制吧?
      

  2.   

    呵呵,使用udp也许确实可以提高一些效率,但是如果控制不好,很容易导致数据不完整,所以此类软件一般还是使用tcp来完成。我不知道Acess anywhere是什么软件,是不是PC Anywhere的升级版本?
    这类远程监控的软件一般都是使用楼主说的原理,其实要自己实现一个也并非太困难。
    只是如果需要较好的效率(实时性和被控端的CPU占用),可能会需要花费很多功夫。
    首先,第一步,截获被控端的计算机屏幕就有很多讲究,比如何时截屏?最常见也是最简单的一种是轮旬,截完一屏接着截下一屏,但是这样可能被控端CPU占用率会很高。很多使用屏幕完全没有变化,根本就没有必要截屏。还比如截获多大的屏幕?最简单的是每次截全屏,但是这同样是低效的。
    第二步,采用什么样的压缩算法来传输,即要求高效率又不能太复杂(不能太占用CPU)
    第三步,发送远程操作其实这些问题的答案都可以在一个开源的软件中找到
    www.realvnc.com
    祝楼主好运。
      

  3.   

    你说的有道理,其实我现在主要研究的就是算法的效率高低。
    BTW,PC ANYWHERE应该只能在局域网内使用吧,如果出了局域网就应该需要服务器了