还有一个帖子地址:http://topic.csdn.net/u/20091212/12/40e013db-c7b6-4079-97bb-0475de2b5d1e.html?5647
问题较多,希望管理员勿删。谢谢。只有这么多分了,两个帖子一起结。我在用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的使用率不高? 希望这个帖子能起到抛砖引玉的作用^_^。