Передача последовательности изображений с помощью сокета, вопрос noob - PullRequest
0 голосов
/ 14 июля 2010

Я создаю сервер-клиент приложения C ++, где клиент отправляет образ (170 КБ) на сервер каждые 200 мс.

При использовании UDP размер несжатых файлов превышает 64 КБ, разрешенных для каждой дейтаграммы (я хотел бы избежать сжатия файлов, если это возможно).

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

Обе розетки были настроены с использованием boost asio. Должен ли я другой протокол?

заранее спасибо

1 Ответ

1 голос
/ 14 июля 2010

Прежде всего, не для этого использует UDP.TCP был разработан для того, что вам нужно, и многое уже делает сам.От вашего POV TCP-соединения всегда будут как-то работать, в то время как с UDP вам придется позаботиться о последовательности пакетов, пропусках пакетов и т. Д. Например, для передачи изображения требуется 3 пакета, UDP выполняет , а не * 1004.* Гарантируйте, что все 3 пакета будут доставлены в пункт назначения, и если они это сделают, это не гарантирует, что они прибудут в том же порядке, который вы отправили.

Теперь для TCP восстанавливаем новое соединениедля каждого файла можно было бы сделать, да, но это не обязательно.В идеале ваш код должен проверить, установлено ли соединение, если нет, переподключиться.Теперь, почему передается только 1-й файл, я не могу догадаться, почему, так как это, скорее всего, связано с вашей реализацией (т.е. я не вижу код через мой хрустальный шар, он должен быть незаряженным или что-то в этом роде ;-)).Но дело в том, что это, безусловно, , а не из-за каких-либо ограничений TCP или Boost :: ASIO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...