guacamole-server0.9.9(RDP server)

本文主要分析guacamole-server0.9.9中的RDP服务器部分,详解guacd如何作为守护进程监听并处理客户端连接,加载RDP协议插件,初始化客户端,以及关键结构体和流程。
摘要由CSDN通过智能技术生成

guacamole-server0.9.9(RDP server)

guacamole支持不同的远程桌面连接,也就是说guacamole需要支持不同的远程桌面协议。本节内容是单指基于RDP协议的部分。guacamole 整个项目分为三个部分,分别是guacamole server、guacamole client以及web application。guacamole server的功能是为client和RDP server提供通信接口。guacamole server又可以称作guacd。guacd与guacamole client之间的通信是依靠guacamole协议,与RDP server通信是依靠RDP协议,具体到代码中使用的是开源项目freerdp。guacd通过加载不同的动态链接库来支持不同的协议。此处加载RDP动态链接库。

guacamole server与其他部分的通信机制如下图所示:


guacd在系统中维持一个守护进程,守护进程中主要是监听来自guacamole client的socket数据包,收到数据包之后创建子进程进行连接处理。

以上是大体介绍了guacamole server的结构,下面将从main函数开始分析代码。分析的重点:

1.     关键结构体分析,包括元素的意义、函数指针的调用;

2.     关键流程的记录;

3.     结构体之间的关系;

4.     关键函数的分析;

1.  main()

l  流程:

1.     新建guacd_client_map,管理连接的client

2.     从配置文件中读取client地址和端口号

(配置文件应该是/etc/guacamole/guacamole.properties,在实测中IP地址:127.0.0.1 端口号:4822)

3.     得到client端socket,描述符socket_fd,并绑定地址

4.     开启守护进程,向配置文件中写入进程pid,设置信号相应模式

5.     listen(socket_fd),监听client端的socket

------------------------------------------连接到guacamole client-----------------------------------

6.     循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值