0

我正在使用 VNCsharp .NET 控件使用其 VNC 协议附加到远程 XenServer 会话。除了增加 VM 的分辨率时,此控件一直运行良好。例如从 800x600 到 1024x768。XenCenter 中的控制台查看器可以很好地处理这种情况!

在这种情况下,XenServer 似乎停止发送屏幕更新。但是,我连接了 Wireshare,显然仍有数据包发送到我的客户端。我已经检查以确保 VNCsharp 正在处理边界条件(流更改)并且看起来没问题。如果分辨率请求超时,那么当 Windows 恢复到原始分辨率时,屏幕将再次工作。

如果我断开连接并重新连接,那么客户端会愉快地呈现新的分辨率。

我怀疑我缺少一些复位信号。VNC RPC 中有关于此的内容吗?如果是这样,我找不到它。

建议?

4

1 回答 1

0

我解决了这个问题,但感觉就像一个黑客。我必须在 ReadByte 调用中添加一个流超时(5 秒)。主机丢弃流并且客户端没有检测到它。

为了防止由于不活动而触发超时,我必须添加一个 keepalive 线程,如果客户端空闲,它会发送鼠标移动。我认为有一种更优雅的方式来保持活力,但它现在正在工作。

于 2009-10-10T18:28:13.273 回答