首先要说明情况,我分析的代码基于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协议栈的&