XWindow игнорирует несколько сообщений ClentMessage, отправленных в течение одной секунды

StackOverflow https://stackoverflow.com/questions/66111

  •  09-06-2019
  •  | 
  •  

Вопрос

Я столкнулся с интересной проблемой при разработке нашего устаревшего приложения XWindows.

По причинам, которые не требуют объяснения, я отправляю ClientMessage из утилиты командной строки в приложение с графическим интерфейсом. Большинство сообщений в конечном итоге имеют одинаковое содержимое, поскольку цель сообщения — запустить процесс синхронной связи по некоторым боковым каналам. .Я заметил, что иногда я отправляю два сообщения, но доставляется только одно.Я связал это с тем, что оба сообщения имели одинаковое содержание и были отправлены в одну и ту же секунду (IOW, временная метка в журнале отправки была одинаковым номером).Как только я добавил к сообщениям немного фиктивного содержимого, чтобы сделать их разными, проблема исчезла.

Это произошло на двух разных X-серверах:vncserver и Exceed.Я использую какую-то функцию XWindows, о которой я не знаю - какое-то регулирование/сжатие сообщений?Кто-нибудь сталкивался с подобным?

Это было полезно?

Решение

Насколько мне известно, X-сервер никогда не должен сжимать клиентские сообщения, но, возможно, некоторые наборы инструментов X (Motif, Xaw и т. д.) сжимают их.Это первое, на что я бы обратил внимание: возможно, приложение с графическим интерфейсом, получающее сообщение, сжимает где-то внутри набора инструментов до того, как код приложения его увидит.

С другой стороны, и vncserver, и превышение, вероятно, больше ориентированы на удаленное использование, чем другие X-серверы, и, возможно, они могут содержать некоторые опрометчивые хаки сжатия.Я прочитал много спецификаций X и написал много X-кода, но никогда не слышал о таком поведении.

Случайная маловероятная мысль: убедитесь, что у вас есть XFlush() или XSync() в конце вашего приложения командной строки, прежде чем оно закроется, чтобы быть уверенным, что вы записываете эти сообщения в сокет перед закрытием.Но я не знаю, почему содержание сообщения имеет значение, если проблема в этом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top