Domanda

Ho riscontrato un problema interessante durante lo sviluppo della nostra applicazione XWindows legacy.

Per ragioni che non meritano di essere spiegate, sto inviando ClientMessage da un'utilità della riga di comando a un'app GUI. La maggior parte dei messaggi finisce per avere lo stesso contenuto, poiché lo scopo del messaggio è attivare un processo di comunicazione sincrono su alcuni pipe laterali .Ho notato che a volte invio due messaggi, ma ne viene recapitato solo uno.Ho fatto risalire questo al fatto che entrambi i messaggi avevano lo stesso contenuto e sono stati inviati nello stesso secondo (IOW, il timestamp del registro sull'invio era lo stesso numero).Non appena ho aggiunto alcuni contenuti fittizi ai messaggi per renderli tutti diversi, il problema è scomparso.

Ciò è accaduto su due diversi server X:vncserver ed Exceed.Sto utilizzando alcune funzionalità di XWindows di cui non sono a conoscenza, ad esempio una sorta di limitazione/compressione dei messaggi?Qualcuno ha riscontrato questo genere di cose?

È stato utile?

Soluzione

Il server X non dovrebbe mai comprimere i messaggi del client di cui sono a conoscenza, ma forse alcuni toolkit X (Motif, Xaw, ecc.) li comprimono.Questa è la prima cosa che cercherei: forse l'app GUI che riceve il messaggio si sta comprimendo da qualche parte all'interno del toolkit, prima che il codice dell'applicazione lo veda.

D'altra parte, sia vncserver che excel probabilmente si concentrano maggiormente sull'utilizzo remoto rispetto ad altri server X, e potrebbero contenere alcuni hack di compressione sconsiderati, plausibilmente.Ho letto molte specifiche di X e scritto molto codice X, ma non ho mai sentito parlare di questo comportamento.

Un pensiero improbabile e casuale, assicurati di avere un XFlush() o XSync() alla fine dell'app della riga di comando prima che esca, per essere sicuro di scrivere quei messaggi nel socket prima di chiudere.Ma non so perché il contenuto del messaggio sarebbe importante se questo fosse il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top