Newsgroup: it.comp.os.linux.development
Titolo: problema di sincronismo...

Mi serve un'idea, è tutto il giorno che ci penso e non mi viene in mente
nulla di efficace.
Ho un'applicazione che fa multicasting di dati binari e sto scrivendo
dall'altra parte un'applicazione che dovrebbe ricevere i dati e
visualizzarli.
Ora, se prima parte il visualizzatore e poi parte il mittente non ho il
minimo problema: tutti i dati vengono ricevuti correttamente, so dove
finiscono le varia strutture. Ma se parte prima il mittente come diavolo
faccio a sincronizzarmi?
Esiste una qualche soluzione oltre a mandare un pattern noto a priori e
leggere byte a byte fino a trovarlo? No, perché i dati che viaggiano sono
immagini in formato targa, col cavolo che riesco a trovare il bandolo
della matassa in poco tempo....
Posso farci qualcosa di utile con i pacchetti igmp?

On Sun, 22 Jun 2003 15:38:25 +0200, Ottavio Campana 
was talkin'about:
#define IMHO

Premetto che sono piuttosto ignorante di network programming.
La prima cosa che mi viene in mente sarebbe che il produttore inizi con il
mandare una richiesta del tipo "c'e' qualcuno in ascolto?" Ricevuta almeno
una risposta puo' iniziare a mandare i dati.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
           -<! Failure is not an option...it's bundled with Microsoft !>-

 visualizzarli.
Da quanto ho capito tu vorresti mandare in stream dati e far si che sia il 
chient a capire il flusso dei dati...
Un metodo per farlo č trasmettere ogni tot dati oppure dopo tot tempo un 
segnale di sincronizzazione (a tua scelta). In questo modo dovresti essere 
al sicuro anche nel caso che il client perda qualche pacchetto
-- 
| /
| \Byte - Andrea Briganti - kbytesys(aaattt)
tiscali.it
CSLug member: 
http://cslug.linux.it
 - JID: 
kb...@jabber.linux.it
***Coltiva LINUX tanto Windows si pianta da solo!

 al sicuro anche nel caso che il client perda qualche pacchetto
già, ma cosa posso mandare come sincronizzazione? Siccome mandco immagini,
è possibile che prima o poi mi becco una sequenza simile all'elemento di
sincronizzazione...

 una risposta puo' iniziare a mandare i dati.
non posso: è multicasting, non è una trasmissione connection oriented


Bel problema... Ci provo:
Supponiamo che il segnale di sincronizzazione scelto sia la sequenza di byte
01111110 (0 seguito da 6 byte ad 1 e quindi 0).
Il mittente deve monitorare i byte di _dati_ da mandare, quando l'immagine
da mandare contiene 5 byte a valore 1 di seguito viene inserito uno 0.
Il ricevente quando vede arrivare 5 byte di valore 1 seguiti da uno 0 toglie
lo 0 e considera i byte come dati.
6 byte di seguito a valore 1 sono da considerare segnale di sincronizzazione,
perche' non ci saranno mai 6 byte 1 nello stream dati (verrebbero trasformati
in 1111101).Il token di sincronizzazione viene spedito dopo ogni immagine.
Quindi il cliente si mette in ascolto, scarta tutto fino a che non legge
6 byte a valore 1 seguiti da uno zero, e sa che da questo momento parte una
foto.
Il metodo non e' mio, viene usato x determinare l'inizio di un frame a livello
data link.
Magari si puo' addattare al tuo caso...
Ciao

 data link.
no, quello si fa coi bit, non con i byte :-)