Советы / Примеры отправки файла изображения (jpeg, png) через сокет программирования? - PullRequest
3 голосов
/ 29 ноября 2009

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

Надеялся ли кто-нибудь опубликовать простой пример? или направьте меня в правильном направлении :) Я также использую QT только для моего графического интерфейса, но не использую программирование сокетов QT.

Большое спасибо: D Я действительно ценю это


Вопрос @ djc:

Как бы вы получили путь к каталогу для изображения и каким-то образом использовать команду send для этого изображения? Я в основном использую C ++. Но это тоже вопрос, который у меня был некоторое время.

Ответы [ 2 ]

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

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

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

Вам нужно будет узнать или попросить пользователя указать путь, по которому будет найден файл изображения.

Получив это, вы логически открываете файл, считываете его в буфер, затем записываете этот буфер в сокет и, наконец, закрываете файл (всегда закрывайте то, что открываете, и освобождайте то, что вы выделяете). Однако есть детали, которые нужно отсортировать - например, откуда получающая сторона узнает, что следующие данные являются изображением, и насколько она велика (поэтому она знает, когда вы отправили все это). Ваш протокол, по-видимому, определит битовую комбинацию (один или два байта), которая идентифицирует сообщение как изображение, а затем, вероятно, использует четыре байта для указания размера изображения, за которым следует правильное количество байтов. Вы можете узнать размер файла, используя системный вызов stat() на основе POSIX. Кроме того, вы можете отправить серию пакетов, содержащих части изображения (опять же с типом - на этот раз типа «пакет изображения» вместо «изображение») плюс длину пакета (который может быть только 16-битным целое число без знака (максимальный размер 65535 байт), а также «пакет конечного изображения» для последнего сегмента. Это, возможно, проще для отправителя; для получателя легко, если данные идут прямо в файл, но грязно, если получателю нужно изображение в памяти.

...