Ho un array di byte come questo:Come dividere e unire array in C++ per UDP?
lzo_bytep out; // my byte array
size_t uncompressedImageSize = 921600;
out = (lzo_bytep) malloc((uncompressedImageSize +
uncompressedImageSize/16 + 64 + 3));
wrkmem = (lzo_voidp) malloc(LZO1X_1_MEM_COMPRESS);
// Now the byte array has 802270 bytes
r = lzo1x_1_compress(imageData, uncompressedImageSize,
out, &out_len, wrkmem);
Come posso dividerlo in parti più piccole sotto 65.535 byte (l'array di byte è una grande immagine che voglio inviati su UDP che ha limite superiore 65.535 byte) e poi unire quei piccoli pezzi indietro in un array continuo?
Ma ancora, mi piacerebbe farlo con UDP. Invio solo l'intera immagine una volta quindi invio solo i pixel che sono stati modificati in modo che i seguenti pacchetti siano più piccoli e si inseriscano in un unico pacchetto UDP. Ho bisogno di UDP perché è più veloce del TCP e ho bisogno di velocità. –
@Richard: non si sarà in grado di implementare una connessione che lo faccia correttamente e che sia più veloce di TCP. Aprire una connessione TCP per inviare il grande blocco iniziale e quindi utilizzare UDP per gli aggiornamenti (supponendo che se uno qualsiasi degli aggiornamenti viene perso o distrutto, è possibile ripristinarlo; i pacchetti UDP possono essere persi o distrutti). Questo è ciò che fanno i server di gioco che hanno bisogno di questo tipo di bassa latenza - cioè i file audio e così via vengono trasferiti su TCP, ma le posizioni dei giocatori e tali sono trasmesse su UDP (cioè i server CounterStrike). –
È vero in teoria. Meno in pratica. –