在RFC 6143 specs之后,我正在开发与VNC兼容的服务器,并使用UltraVNC作为客户端。
我注意到,尽管有时一切正常,但大多数时候UltraVNC不会发送FramebufferUpdateRequest消息。结果,我的服务器没有发送FramebufferUpdate,并且屏幕卡住了。单击UltraVNC工具栏上的“刷新”按钮,将正常显示屏幕更新。
我已经做过一些测试,我发现,当发生此问题时,除非有用户输入(鼠标),否则UltraVNC不会将任何内容发送到我的服务器,并且TCP流量保持为空(套接字未关闭)。 / keyboard)或用户点击“刷新”按钮。
我想到一旦检测到屏幕变化(或在用户输入之后),无论客户端是否请求,都发送FramebufferUpdate。这很好用,并且我进行了实时屏幕广播,但是由于流量被FramebufferUpdates阻塞,UltraVNC似乎无法再处理用户输入(键盘和鼠标)。另外,这似乎违反了规范,因为它说只能发送帧缓冲区更新以响应一个或多个FramebufferUpdateRequests(在VNC中,服务器仅在客户端请求时才发送帧缓冲区)。
所以,我的问题是:如果可能的话,我如何告诉VNC客户端屏幕的某些区域已被更新,“建议”它发送一个FramebufferUpdateRequest?另外,为了发出FramebufferUpdateRequest,UltraVNC需要考虑什么?它看起来好像不是基于间隔的,也不是基于用户输入的...