当前位置: 代码迷 >> .NET分析设计 >> 【讨论】.Net版本的远程桌面,该如何解决
  详细解决方案

【讨论】.Net版本的远程桌面,该如何解决

热度:329   发布时间:2016-05-01 22:35:03.0
【讨论】.Net版本的远程桌面
我在用C#做一个远程桌面。实现中遇到很多问题。
目前已经具备雏形,可以远程看视频,实现鼠标键盘操作,支持32、24、16位图像。
只是广域网的性能(尤其是复杂桌面)和VNC、Remote差距很大。
开这个帖子希望交流一下,得到一些指点。

通信层:UDP协议,使用UDP为了方便穿透内网。VNC是TCP协议的,内网穿透要麻烦点。
      1、UDP64K缓冲的限制,是否会不适于发送大量的数据。
      2、网络层的优化SetOption的原理和具体的使用方式。
      3、关于丢包,最高效的解决方案。
      4、.Net下的异步模式和完成端口对通信效率有多大的提高,如何实现?

包层:每个数据包有统一的结构。包含ID,发送时间,优先级,命令字等等。
      1、.Net没有提供高效的支持多线程的优先级队列?
         我需要类似java的优先级阻塞队列。目前使用边界阻塞最小堆做了一个粗略的实现。
         
SFB层:这个层是模仿RFB协议做的。目前只做到增量传输。
      1、字节流的压缩算法。比如RRE的压缩。
      2、关于CopyRect是如何实现的,因为客户端是不知道哪些区域是可以Copy的,服务器端判断的算法?
      
图像层:这一层做图像的分割、合成,图像匹配等。
      1、图像匹配算法,是否有高效的算法可以不比对每个像素,做到基本上判定两副图像匹配。
      2、图像合成,直接用Bitmap粘贴肯定效率低下,这个已经用BitmapData修正。
      3、图像显示,Invoke,.Net的invoke性能感觉很差。

抓屏:使用API抓屏时间为6Oms。

CPU的使用率:线程睡眠可以降低CPU使用率,但是影响实时性。如何平衡?

Remote、VNC对于复杂的远程桌面,如视频和游戏界面,为什么能达到比较理想的效果,而且CPU的使用率不高?

希望这个帖子能起到抛砖引玉的作用^_^。

------解决方案--------------------
mark 学习
------解决方案--------------------
这种技术做得人不多,关注
------解决方案--------------------
帮顶,关注
------解决方案--------------------
up
------解决方案--------------------
很想学习学习,关注各位高手动态了
------解决方案--------------------
这么强悍?
------解决方案--------------------
关注
------解决方案--------------------
该回复于2010-01-19 17:20:56被版主删除

------解决方案--------------------
mark
------解决方案--------------------
好像不错
------解决方案--------------------
学习
------解决方案--------------------
mark
------解决方案--------------------
aaaaaaaaaaaaaaaaaa 
------解决方案--------------------
aaaaaaaaaaaaaaaaa 
------解决方案--------------------
see up
------解决方案--------------------
还是VC++或Delphi作这个很好
------解决方案--------------------
我用vc做了个demo, 性能还行,lz可以去我的空间参考,加油!
------解决方案--------------------
厉害,关注!
------解决方案--------------------
ddddddddddddd
------解决方案--------------------
厉害
------解决方案--------------------
marks
------解决方案--------------------
关注!
------解决方案--------------------
mark
------解决方案--------------------
很强大
------解决方案--------------------
关注!
------解决方案--------------------
很想学习学习       关注!
------解决方案--------------------
绝对要学习1下的!
------解决方案--------------------
顶上去
------解决方案--------------------
很好的帖子呢很好的帖子呢
------解决方案--------------------
只有顶的份啊。。。
------解决方案--------------------
dd
------解决方案--------------------
只有顶的份啊。。。
------解决方案--------------------
顶~~~
------解决方案--------------------
10fen
------解决方案--------------------
aaaaaaaaaaaaaaaaaaaaaaaaa
------解决方案--------------------
有个开源项目,一时半会想不出来是什么了,还不错。

个人感觉ms内部实现原理不是直接传送图像内容,应该是传送图像是怎么画出来的。传送的应该都是gdi+的绘画调用参数。dx应该也是类似的。然后在远程再使用同样的参数画图。

在应用层面要做出那样的水平,实在很难。

把目标定在能跟qq远程协助那样的性能就ok了。
------解决方案--------------------
关注。
------解决方案--------------------
关注+学习
------解决方案--------------------
学习
------解决方案--------------------
好  啊是 
------解决方案--------------------
发个vhkvkb  
------解决方案--------------------
1 楼主强

------解决方案--------------------
mark!
------解决方案--------------------
帮顶,关注
------解决方案--------------------
mark
------解决方案--------------------
这种我觉得在网络传输图像的时候不应该传输桌面的截图,而应该一开始传一个桌面的背景图,然后就是传一些文件夹信息,然后每次有变化的话,在客户端这边重绘。这样可以节省很多的网络流量。
------解决方案--------------------
学习啦 
------解决方案--------------------
太牛了。不懂,帮顶了……
------解决方案--------------------
学习了!