首先要说明情况,我分析的代码基于xrdp-2012-5-11日,而不是最新的代码,最新的代码稍有改动,但是主体的思想没有变化
xrdp-2012-5-11日代码的下载地址:https://github.com/FreeRDP/xrdp/tree/c50425032c9da4950d41845c668e4056325e7737,当然下载之后的代码真正运行起来,那必须在linux下,我使用的linux是centos 5.7 下载地址是:http://mirror.bit.edu.cn/centos/ 这个是北理工的开源软件库,教育网的同学们会下的快一点。linux的开发环境,我用的是eclipse,即eclipse cdt,效果很不错。至于怎么搭建环境,我就不再赘述,百度/google都很方便就能得到结果。
总体的架构很难现在就给大家画出来,这个还得慢慢来,我准备先分析下每个源代码文件的每一个函数的作用,先从底开始,然后再开始分析整个流程。
解压xrdp后,会看到以下几个目录common,libxrdp,xrdp,rdp,freerdp,xup,vnc,xorg。
1. common
xrdp项目基于的common库,封装了系统调用,包括文件,线程,socket通信,信号量,事件等等。最终编译成动态链接库libcommon.so
2.libxrdp
xrdp与客户端通信的代码,fix me。包含了对客户端的rdp连接的解析,我个人认为就是用来处理rdp协议栈的,fix me。最终编译成动态链接库libxrdp.so
3.xrdp
xrdp主程序的文件夹,这个是我们关注的核心。
4.rdp
rdp插件,这个下文仔细讲。最终编译成动态链接库librdp.so
5.freerdp1
另一个功能更强的rdp插件,依赖于freerdp项目,这个下文仔细讲。最终编译成动

本文分析了xrdp-2012-5-11版本的代码,包括common、libxrdp、xrdp、rdp、freerdp、xup、vnc和xorg等组件。xrdp作为远程桌面协议的实现,允许Windows通过mstsc.exe连接Linux服务器。libxrdp处理RDP协议栈,freerdp提供增强的RDP插件,xup和vnc支持X11和VNC服务器。文章还探讨了sesman和mc在xrdp中的作用,并指出xrdp有潜力作为代理转发功能。

1万+

被折叠的 条评论
为什么被折叠?



