首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-15 
【讨论】.Net版本的远程桌面我在用C#做一个远程桌面。实现中遇到很多问题。目前已经具备雏形,可以远程看视频,

【讨论】.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
[解决办法]
很想学习学习,关注各位高手动态了
[解决办法]
这么强悍?
[解决办法]
关注
[解决办法]

[解决办法]
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
[解决办法]
这种我觉得在网络传输图像的时候不应该传输桌面的截图,而应该一开始传一个桌面的背景图,然后就是传一些文件夹信息,然后每次有变化的话,在客户端这边重绘。这样可以节省很多的网络流量。
[解决办法]
学习啦
[解决办法]
太牛了。不懂,帮顶了……
[解决办法]
学习了!
[解决办法]
顶一下.呵呵
[解决办法]
借鉴下
[解决办法]
MARK...
[解决办法]
关注
[解决办法]
关注
[解决办法]
在有限的网速内减少相似数据的传输未尝不是一个好办法。比如一定时间内只是晃动鼠标,没做其他操作,完全可以只传输当前鼠标的运动轨迹,而不是频繁抓图。
[解决办法]
占位,关注
[解决办法]
我顶 我顶 我顶顶顶
[解决办法]
marks
[解决办法]
我留着学习
[解决办法]
牛...
------解决方案--------------------


study /
[解决办法]
我有个远程桌面的源代码 要可加QQ 115096770
[解决办法]
谢谢!学习!不过我不知道要怎么编写!
[解决办法]
顶你 不错
[解决办法]
看看,学习一下
[解决办法]
学习!!
[解决办法]
学习.........
[解决办法]
我能围观么?
[解决办法]
关注
[解决办法]
学习
[解决办法]
呼唤高手
[解决办法]
我也在做这个也!楼主加好友,以后多交流啊!!
做这类软件,业界无可争议的第一是teamview啦,所以很多东西我都是模仿它来做的
做得没你快,现在一直在研究网络传输的问题
肯定不能用TCP的,vnc是人家在美国那边实验室搞出来的,那边的网络,tcp链接就能很好的满足需求了
感觉光就网络传输这块就够我们好好研究的了。现在网络上有很多基于UDP的可靠链接,我也在尝试着做自己UDP可靠链接,而传输命令和传输图像分别用不同的基于UDP的协议,可以提高传输效率。另外,做好各方面的同步,也可以提高传输效率的。还有.Net下的异步模式和完成端口对通信效率提高还是很多的,特别是和C#简单的手动开多线程相比。我自己测试过,用手动开的线程sleep(1),发现C#的线程间切换非常耗时

我现在忽然遇到的问题是:win7开始不支持服务调窗体了...你做这个了吗?怎么解决的?图像传输也没开始做,正在研究DX。你是怎么做图像传输的呢?60ms抓屏也就是每秒才十几帧啊,看上去能接受吗?有什么特别的经验吗?
[解决办法]
学习
[解决办法]
mark 学习
[解决办法]
xuexi
[解决办法]
mark
[解决办法]

探讨
只有顶的份啊。。。

[解决办法]
我也是第一次做这种项目
目前已经结束。
使用的是Tcp 连接,
首先传输图像大小, 然后分批次用Socket 每次最多传输 20480 个字节
不用Sleep cpu 使用率也可以控制在10以下。 传输效率 为每秒 8张 正好可以 满足人眼的 125毫秒反应时间。
在有线网 无线网络上测试 效果都挺好。
udp协议 的目前在开发中 同观望。。。。。。。。。。

[解决办法]
观看………………
[解决办法]
关注,以后学习。
[解决办法]
路过看看
[解决办法]
P2P形式的确实很复杂啊!比起点对点的TCP来说麻烦多了。但是TCP点对点的话如果是C/S模式,那不是还要通过服务器中转?那又麻烦了……
[解决办法]
up
[解决办法]
路过看看
[解决办法]
那能不能入侵的啊?
[解决办法]
路过看看
[解决办法]
接分
[解决办法]
codeplex上不是有个开源的吗?而且相当牛x
[解决办法]
加油吧!弄出来 代码共享下,一起思考,一起进步
[解决办法]
信道加密
------解决方案--------------------


最好不要截图,再传图,这样的性能太差了.
学下Windows远程桌面的处理方式.用消息就搞定了
[解决办法]
up
[解决办法]
顶 加加分 没分了
[解决办法]
学习一下

热点排行