Domanda

Ho un paio di domande sull'invio di immagini.

Come gestisco diversi tipi di file, jpeg, png, ecc.

Se il file è di grandi dimensioni, devo usare i numeri di sequenza ... ma non so come smettere di ricevere se non conosco il numero di numeri di sequenza.

La mia conoscenza del trasferimento di immagini / file è quasi nulla. Non ho mai programmato nulla di simile prima. Speravo di ottenere alcuni suggerimenti e trucchi =)

Grazie mille.

Sto anche usando QT, se questo aiuta la mia situazione.

È stato utile?

Soluzione

Se si utilizza un socket TCP, non sono necessari numeri di sequenza, poiché TCP garantisce già che i dati arrivino nello stesso ordine in cui sono stati inviati. Basta inviare i dati e, al termine, chiudere la connessione. Facoltativamente, puoi utilizzare un tipo di intestazione del pacchetto auto-definita che fornisce informazioni aggiuntive (ad es. Se desideri trasmettere più file su una connessione).

Altri suggerimenti

Almeno per le immagini, supponendo che tu stia utilizzando QImage, puoi usare un QDataStream per convertire il tuo QImage in un QByteArray, che può quindi essere scritto nell'oggetto QTcpSocket usando write (). È possibile serializzare praticamente qualsiasi tipo di dati di Qt in un QByteArray usando questo metodo.

Per i file generali, QIODevice (base per QFile, tra gli altri) fornisce funzioni di lettura come readAll (), che leggerà l'intero file in un QByteArray pronto per l'invio.

Troverai una serie di esempi di reti inclusi nella distribuzione Qt. Vedi Assistente Qt - > Contenuti - > Tutorial ed esempi - > Rete per ulteriori informazioni.

Trasferiscili come faresti con qualsiasi altro dato binario. send () , recv () . O qualunque astrazione Qt fornisce.

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