speciale simbolo per indicare l'inizio di un pacchetto binario?

N

neocool

Guest
Quale sarebbe un buon simbolo speciale per indicare l'inizio di pacchetto personalizzato winsock nella mia domanda?Voglio essere unica per quanto riguarda i dati binari che sono in corso di trasferimento (per
la maggior parte multimediale).

Grazie

 
Bene!Se ho ben capito correctlly 47H simbolo può risolvere il tuo problema è come l'inizio del marcatore nel telaio standard DVB!

 
I (solo), cosa che renderebbe qualsiasi particolare valore byte uno speciale simbolo è come è interpretata da applicazioni che inviano e ricevono.Quindi, qualcosa di semplice uso per individuare, 0 o ff, e si dovrà anche assicurarsi che questo valore non è * * inviata dalla vostra applicazione in uno qualsiasi dei dati multimediali.

Questo può essere fatto mediante codifica i dati in modo che sia impossibile per il valore che si verifichi (ad esempio una codifica semplice sarebbe quella di trasmettere tutti i tuoi dati multimediali binario codificati in ASCII esadecimale, che non può contenere l'unico simbolo 0 o ff), o utilizzando un 'fuga' di caratteri: la fuga sarebbe protocollo per inviare il valore speciale (consente di dire che è 0xff) inviando il carattere di escape (consente di dire che è 0xFE), seguita da (dire) 0x7f di stand per la 0xff.Alla fine riceve questa sequenza è sostituito da solo la 0xff.Naturalmente è anche probabilmente desidera inviare un valore di 0xFE nei dati multimediali, e questo potrebbe essere realizzato sia attraverso l'estensione di un valore a due 0xFE bytes 0xFE 0x7E, oppure inviando 0xFE 0xFE (cioè due volte il carattere di escape).Tenete a mente che tutti i dati inviati tramite la connessione deve essere protetto come questo, se ci sono campi a lunghezza che potrebbe assumere il valore ff questi devono essere codificati o soggetti a sequenza di escape di codifica.

Con uno di questi sistemi si può essere sicuri che quando si verifica un valore speciale che indica l'inizio di un 'pacchetto'.

L'altra cosa da guardare fuori per l'efficienza globale è: se il valore è un comune uno con l'applicazione dei dati, quindi la fuga approccio con la quantità di dati potrebbe essere aumentato in misura significativa (avvicina doppio nella peggiore delle ipotesi) in modo che tu possa scegliere di non 0 o utilizzare ff come il codice speciale, se questi valori sono particolarmente comune per l'applicazione dei dati.Naturalmente la codifica approccio permetterà anche di aumentare la quantità di dati trasferiti, di un importo a seconda del sistema di codifica selezionata.In caso di ASCII esadecimale, un byte sono trasmessi in due caratteri ASCII, quindi i dati sono sempre raddoppiato in questo caso.Naturalmente ci sono molto più efficienti schemi di codifica.Guardate yenc per usenet per una più efficiente (e complessi) esempio.

Se si vogliono evitare questi problemi, e forse il sovraccarico di non individuare correttamente l'inizio del pacchetto di andare al primo non è troppo grande, quindi evitare il simbolo speciale approccio completamente, aggiungere un semplice codice di avvio (non unico ma infequently - che si verificano nei dati),
la lunghezza e la CRC seguenti dati che devono essere corrette per un pacchetto di essere valida.

HTH
barny

 
Grazie per le risposte.

Citazione:

...
evitare il simbolo speciale approccio completamente, aggiungere un semplice codice di avvio (non unico, ma che si verificano in infequently-dati), la lunghezza e la CRC ...
 
Sì, che dovrebbe funzionare bene.E 'molto improbabile che si verifichi naturalmente.NOTA non è impossibile, si può avere una molto rara occasione in cui un cliente si lamenta che la loro visualizzazione è completo spazzatura.

Mi ricordo di lavoro per la manutenzione di un sistema in cui il cliente è lamentato del fatto che dopo il riavvio,
a volte i tasti funzione programmabili contenute completa immondizia.È risultato che il promotore aveva protetto il 'non-volatile' di memoria per il tasto funzione di memorizzazione utilizzando un 8-bit CRC.In realtà questo ha ridotto la probabilità di rilevare la corruzione a 1 in 256, dopo l'avvio la mattina, a circa una volta
all'anno (in termini di giorni lavorativi), la RAM per ogni tasto è corrotto non è stato rilevato, e dato che ci sono stati trenta tasti programmabili sulla tastiera, questo risultato abbastanza frequente comportamento scorretto, il risultato di scarsa attenzione alla differenza tra improbabile e impossibile.

HTH
Barny

 
Grazie barny451 e mehrara per le risposte.
Potrei tornare presto

 

Welcome to EDABoard.com

Sponsor

Back
Top