【发布时间】:2018-12-17 13:35:48
【问题描述】:
我有一个容错应用程序,其中 X 服务器请求在远程客户端上启动应用程序(通过某种其他机制)并接收并显示其 X 窗口。容错意味着服务器需要检测到客户端的连接丢失,然后调用不同的备份客户端并在那里启动应用程序并显示窗口。
我的问题是 X11 协议中是否存在允许在 X11-Server 中可靠地检测连接是否已断开的机制。
实验表明,在拔出电缆连接时,它需要一些 TCP-Timeout 来检测套接字级别的连接丢失。这非常依赖于操作系统。在我们的例子中,大约 30 分钟后 X-Server 最终关闭了窗口。
所以另一个假设可能是 X11-stream 不断地传递一些命令并且服务器可以实现一些这样的逻辑:如果 X11-stream 在超时 y(例如 3 秒)内没有传递任何 X11 流量,我们假设连接丢失并主动关闭窗口并建立与回退客户端的连接。
这个假设是真的吗?我在X11-protocol 中没有看到任何关于如何检测连接丢失的声明。是否有任何明确的生命迹象定期传播?或者假设有持续的流量是有效的?或者在连接完全启动并运行时,是否有更长的不活动时间,根本没有传输任何内容?
来自客户端的NoOperation 命令可用于此目的。但是客户通常会实施类似的东西作为生命标志吗?
【问题讨论】:
-
您是否正在编写启动远程客户端的应用程序(在本地运行,在 X11 服务器上)?你能在里面放点东西吗?