различимый входной разъем - PullRequest
0 голосов
/ 27 января 2011

Я пытаюсь отправить несколько элементов данных через сокет TCP с клиента Android на сервер Python. Пользователь на стороне клиента может сделать несколько вариантов выбора, поэтому я использую число, отправленное в виде символа, чтобы различать типы запросов. Я должен отправить выбор и конкретные данные в зависимости от выбора. Для текущего выбора (выбор № 1 в данном случае) мне нужны выбор и 2 строковых поля и изображение. У меня передача изображения работает сама по себе, а выбор работает самостоятельно. Проблема, с которой я столкнулся сейчас, заключается в том, что чтение буфера в выборе также считывает поток байтов изображения сразу после него.

1 Ответ

2 голосов
/ 27 января 2011

TCP объединит ваши записи в один пакет, если они записаны до того, как пакет будет отправлен, что означает, что информация будет получена сцепленной.

Распространенным решением будет включение «кода операции» перед вашими данными.Например, префикс CHOICE перед отправкой целого числа.Когда вы читаете CHOICE в своем скрипте Python, вы знаете, что получаете целое число и, таким образом, читаете столько данных.Перед тем как отправить изображение, добавьте в него IMG и количество считываемых байтов.Таким образом, вы можете читать столько байтов, сколько вам нужно, а затем искать следующий код операции.

Ваш пакет должен выглядеть следующим образом: CHOICE1IMG<number of bytes><image bytestream>

Очевидно, что ваш код операции может быть любым, что вы хотитеЭто всего лишь пример.

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