答案 0 :(得分:16)
你应该得到一个很长的问题的徽章。 ; - )
在回答您的主要问题时,VNC使用RFB协议,该协议是远程帧缓冲协议(因此是首字母缩略词)而不是流式视频协议。 VNC客户端向服务器发送FrameBufferUpdateRequest消息,该消息包含客户端感兴趣的视口区域和增量标志。如果未设置增量标志,则服务器将使用包含所请求区域内容的FrameBufferUpdate消息进行响应。如果设置了增量标志,则服务器可以使用FrameBufferUpdate消息进行响应,该消息包含自上次向该区域发送客户端以来所请求的区域的任何部分。
请求和更新如何交互的定义没有明确定义。如果没有任何更改,服务器不一定会响应每个具有更新的请求。如果服务器有多个从客户端排队的请求,则还允许发送单个更新作为响应。此外,客户端确实需要能够响应来自服务器的异步更新消息(不响应请求),否则客户端将失去同步(因为RFB不是成帧协议)。
通常,客户端只是实现为定期间隔发送整个帧缓冲区视口的增量更新请求,并在它们到达时处理任何服务器更新消息(即不会尝试将请求和更新结合在一起)。
Here是对FrameBufferUpdateRequest消息的描述。