一.相关概念
Channel(通道):
Client和server通过通道进行交互。每个通道类型专用于一种特殊数据类型传输。每个通道用一个专用的TCP套接字,可能是安全的(用SSL加密)或不安全的。在客户端每个通道有一个专用的线程。因此通过不同的线程优先级,每个通道被安排不同的传输功能,通道包括:
- 主通道( main ),由 RedClient 实现的主通道;
- 显示通道(display channel),处理图形命令,图像以及视频数据流;
- 输入通道(inputs channel),用于鼠标键盘输入;
- 位置通道( cursor channel ),指示设备的位置、可视性和光标形状;
- 音频播放通道(playback channel),指示来自服务器待由客户端播放的音频;
- 音频捕捉频道 ( record channel ),指示客户端捕捉的音频;
- 每个Channel就是客户端与服务端一个的网络连接。
客户端将每个Channel实现为一个单独的线程,实现方式是定义一个以单独线程运转的RedChannel基类,然后从此基类中派生所需要的具体功能类。
客户端启动后会首先与服务器建立连接,此连接即为MAIN_CHANNEL,MAIN_CHANNEL建立起来之后,客户端首先向服务器发送查询命令,请求服务器支持的Channel类型,然后客户端对所有支持的Channel一一创建对应的Channel类实例,每个实例都会开启自己的工作线程并向服务端发起连接请求,建立网络连接。