Visualizzazione dei risultati da 1 a 3 su 3

Discussione: comprimere flusso dati

  1. #1

    comprimere flusso dati

    Salve,

    tramite un socket vorrei spedire un flusso di dati testuali...ma
    vorrei gzipparli c comprmimerli in generale in real time prima di passarli al socket.

    Come si può fare??

    Grazie
    Alla batteria dai retta ballA

  2. #2
    ciao

    io per comprimere i dati durante lo stream usavo questo sistema di layer.


    APPLICAZIONE PRINCIPALE <=> COMPRESSORE/DECOMPRESSORE <=> GESTORE SOCKET

    L'applicazione principale invia un pacchetto di dati di dim che sono grandi a piacere.
    Ammettiamo che vuole inviare un pacchetto di 150KB.
    A livello di programmazione rimane pur sempre nella pratica un invio di una stringa binaria di 150KB.

    Il compressore comprime in zlib o gzip, non ricordo cosa usavo.
    Il risultato della compressione è una stringa sempre binaria.

    All'inizio della stringa aggiungo un byte fisso costante 0xqualcosa.
    Si aggiunge dopo il byte costante la DIM in byte della stringa compressa

    esempio
    0x23 0x00 0x00 0x00 0x0f <stringa binaria di 15 byte>
    0x23 è costante
    0x00 0x00 0x00 0x0f è la lunghezza in byte della stringa compressa.

    Successivamente invierai all'altro client il risultato delle operazioni precedenti.
    Il primo byte dovrà essere 0x23 per chi riceve.
    I 4 byte successivi mi dicono quanti dati devo caricare prima di poterli spacchettizare.
    Appena il mio buffer si riempie della DIM giusta allora riprendo la stringa di 150KB iniziali e la passo alla funzione che decomprime.


    Consigli:
    Comprimi il pacchetto solo se i dati da inviare alla volta sono più grandi 1KB. Inq uesto caso per riconoscere se un pacchetto che arriva è compresso o meno puoi usare due costanti iniziali differenti (0x23 se è compresso e 0x24 se non lo è).


    Questo è il sistema che usavo io e che usa anche emule.
    Chiamami se non hai capito! Non che ti sottovaluti ma so per certo che non so spiegarmi come vorrei /cry

    Ciau^^
    ...

  3. #3
    sei stati chiarissimo!
    Alla batteria dai retta ballA

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.