我在为旧版XWindows应用程序开发时遇到了一个有趣的问题。
由于无法解释的原因,我将ClientMessage从命令行实用程序发送到GUI应用程序。大多数消息最终都具有相同的内容,因为消息的目的是触发同步通信过程一些侧管。我注意到有些时候我会发送两条消息,但只有一条消息被传递。我已经跟踪了这两个消息具有相同内容并在同一秒内发送的事实(IOW,发送时的日志时间戳是相同的数字)。一旦我在消息中添加了一些虚拟内容以使它们完全不同,问题就消失了。
这发生在两个不同的X服务器上:vncserver和Exceed。我是否遇到了一些我不知道的XWindows功能 - 某种消息限制/压缩?有人遇到过这种事吗?
答案 0 :(得分:0)
X服务器永远不应该压缩我所知道的客户端消息,但也许某些X工具包(Motif,Xaw等)会压缩它们。这是我要寻找的第一件事 - 在应用程序代码看到之前,接收消息的GUI应用程序可能正在压缩工具箱中的某个位置。
然后,vncserver和beyond都可能比其他X服务器更关注远程使用,并且它们可能包含一些不明智的压缩攻击,可以想象。我已经阅读了很多X规范并编写了大量的X代码,但从未听说过这种行为。
随机的想法,确保在退出之前在命令行应用程序的末尾有一个XFlush()或XSync(),以确保在关闭之前将这些消息写入套接字。但我不知道为什么邮件内容会有问题。