为什么在屏幕分辨率增加时,XenServer远程控制台的VNCsharp客户端会冻结

时间:2009-10-03 20:29:34

标签: c# vnc xen

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

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

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

我怀疑有一些我失踪的重置信号。 VNC RPC中有什么东西可以解决这个问题吗?如果是这样,我找不到它。

建议?

1 个答案:

答案 0 :(得分:0)

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

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