Вопрос о том, как отправлять изображения в сокет программирования? - PullRequest
0 голосов
/ 27 ноября 2009

У меня есть пара вопросов об отправке изображений.

Как мне обрабатывать файлы разных типов, jpeg, png и т. Д.

Если файл большой, я могу использовать порядковые номера ... но я не знаю, как остановить восстановление, если я не знаю количество порядковых номеров.

Мои знания о передаче изображений / файлов практически отсутствуют. Я никогда не программировал ничего подобного раньше. В надежде получить некоторые советы и рекомендации =)

Большое спасибо.

Я также использую QT, если это вообще помогает моей ситуации.

Ответы [ 3 ]

3 голосов
/ 27 ноября 2009

По крайней мере, для изображений, если вы используете QImage, вы можете использовать QDataStream для преобразования вашего QImage в QByteArray, который затем может быть записан в объект QTcpSocket с помощью write (). С помощью этого метода можно сериализовать практически любой тип данных Qt в QByteArray.

Для обычных файлов QIODevice (среди прочего, база для QFile) предоставляет функции чтения, такие как readAll (), которые будут считывать весь файл в готовый к отправке QByteArray.

Вы найдете несколько сетевых примеров, включенных в дистрибутив Qt. Смотрите Qt Assistant -> Contents -> Tutorials and examples -> Network для получения дополнительной информации.

2 голосов
/ 27 ноября 2009

Если вы используете сокет TCP, вам не нужны порядковые номера, поскольку TCP уже гарантирует, что данные поступают в том же порядке, в котором они были отправлены. Просто отправьте данные, и когда закончите, закройте соединение. При желании вы можете использовать заголовок пакета определенного типа, который дает дополнительную информацию (например, если вы хотите передать несколько файлов по одному соединению).

0 голосов
/ 27 ноября 2009

Передайте их, как и любые другие двоичные данные. send(), recv(). Или какую бы абстракцию Qt не предоставил.

...