Domanda

Ho appena iniziato la costruzione di un server minimo X per Windows da zero. Mentre lavoro attraverso di essa sono sicuro che corro in tutti i tipi di errori e difetti, come io lavoro gli insetti fuori e conoscere meglio il protocollo.

Ecco un esempio di un errore che ho visto stampato da un client:

X Error of failed request:  0
  Major opcode of failed request:  0 ()
  Serial number of failed request:  0
  Current serial number in output stream:  3

Il principale significato codice operativo sembra abbastanza ovvio, ma dove sono le "X errore" codici definiti?

Quali sono i numeri di serie del flusso di richiesta e di uscita fallito? Sono questi dovrebbero abbinare tra di loro? Con flusso di output, vuol dire che ciò che è stato inviato al server X o quello che è stato inviato al XCLIENT? È questo relativi a numeri di sequenza?

È stato utile?

Soluzione

grep la fonte ...

in libX11, XlibInt.c, _XPrintDefaultError () potete trovare questo messaggio di errore.

La maggior parte di ciò che è stampato è da l'evento di errore, che è presumibilmente inviato dal server.

La serie attuale è dpy-> richiesta che è in Xlibint.h:

 unsigned long request;  /* sequence number of last request. */

vale a dire. l'ultima richiesta X che è stato inviato. Questo può o non può essere la stessa richiesta che causa l'errore. (Event-> di serie si suppone che sia la richiesta che ha causato l'errore, ma il server non può avere ottenuto questo diritto)

Per la speranza di codice di un server X Penso che sarete scavando nel codice sorgente molto - la documentazione non sono abbastanza precisi o approfondita ... davvero, si può anche utilizzare una parte del codice esistente, la licenza è abbastanza liberale.

Altri suggerimenti

I codici di errore sono definiti nella specifica X protocollo capitolo chiamato errori . Le altre voci di una risposta di errore sono definiti nel primo capitolo protocollo Formati . I valori reali e il layout dei messaggi di errore si trovano nel errori della protocollo di codifica appendice .

Da contenuto di quel messaggio anche se sembra si sta inviando una risposta piena di zeri quando il cliente non si aspetta una risposta - la maggior parte delle richieste al server X non dovrebbe ottenere una risposta inviato indietro attraverso il protocollo a meno che non sono riusciti .

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