spice协议详解(三):spice架构和通信

一.相关概念

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类实例,每个实例都会开启自己的工作线程并向服务端发起连接请求,建立网络连接。

一.相关概念

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类实例,每个实例都会开启自己的工作线程并向服务端发起连接请求,建立网络连接。

猜你喜欢

转载自blog.csdn.net/tangsiqi130/article/details/132668003