Вопрос о том, как отправлять изображения в сокет программирования?

StackOverflow https://stackoverflow.com/questions/1808342

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top