Question

J'ai quelques questions à propos de l'envoi d'images.

Comment gérer différents types de fichiers, jpeg, png, etc.

Si le fichier est volumineux, j’utilise des numéros de séquence ... mais je ne sais pas comment arrêter de lire si je ne connais pas le nombre de numéros de séquence.

Mes connaissances en matière de transfert d'images / fichiers sont pratiquement nulles. Je n'ai jamais rien programmé de la sorte auparavant. J'espérais obtenir des conseils et astuces =)

Merci beaucoup.

J'utilise aussi QT, si cela peut améliorer ma situation.

Était-ce utile?

La solution

Si vous utilisez un socket TCP, vous n'avez pas besoin de numéros de séquence, car TCP garantit déjà que les données arrivent dans le même ordre que lors de leur envoi. Envoyez simplement les données, puis fermez la connexion. Vous pouvez éventuellement utiliser un type d'en-tête de paquet auto-défini qui fournit des informations supplémentaires (par exemple, si vous souhaitez transmettre plusieurs fichiers via une seule connexion).

Autres conseils

Pour les images au moins, en supposant que vous utilisiez QImage, vous pouvez utiliser un QDataStream pour convertir votre QImage en un QByteArray, qui peut ensuite être écrit sur l'objet QTcpSocket à l'aide de write (). Il est possible de sérialiser à peu près n'importe quel type de données de Qt dans un QByteArray en utilisant cette méthode.

Pour les fichiers généraux, QIODevice (base pour QFile, entre autres) fournit des fonctions de lecture telles que readAll (), qui lira l’ensemble du fichier dans un QByteArray prêt à être envoyé.

Vous trouverez un certain nombre d’exemples de réseau inclus dans la distribution Qt. Voir Assistant Qt - > Contenu - > Tutoriels et exemples - > Réseau pour plus d'informations.

Transférez-les comme toute autre donnée binaire. send () , recv () . Ou quelle que soit l'abstraction fournie par Qt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top