Я кодирую приложение сервера C#, которое получает большой байтовый массив от клиента Android через TCP. Проблема в том, что клиент Android отправляет 14952 байта, а C# не может получить больше 4344. Как можно разрешить сервер C# TCP получать все 14952 байта?TCP-сокет принимает только 4344 байта
0
A
ответ
3
TCP - это протокол потока. Единственный размер буфера, который вы можете надежно получить, - это один байт. Правильный сервер TCP будет вызывать recv
в цикле, пока он не прочитает столько байтов, сколько необходимо для обработки сообщения. Протокол прикладного уровня должен либо (1) включать в себя размер байта сообщения в самом сообщении, либо (2) должен определять, как сообщения обрамляются по базовому потоку байтов.
Короткий ответ:. ТСР слой свободен представить байт на прикладном уровне в куски размером любой байт, который хочет при условии, что байты остаются в том же порядке, что они были отправлены в
Смежные вопросы
- 1. fread только чтение 64 байта?
- 2. ttyACM0 только читает 64 байта
- 3. Форма принимает только цифру?
- 4. TextBox принимает только int
- 5. RegQueryValueEx() всегда возвращает только 4 байта строки
- 6. Получение только одного байта с recv()
- 7. C++ WriteFile записывает только 4 байта
- 8. CommandArgument принимает только один символ
- 9. Сканер принимает только четвертый ввод
- 10. Сканер принимает только один вход
- 11. Java сокет принимает только заголовки
- 12. TextBox.Text принимает только десятичные входы
- 13. setActionButton принимает только первый pendingIntent
- 14. UIBarButtonItem принимает только один ответ:
- 15. cppunit принимает только возвращаемое значение
- 16. Сокет принимает только одного клиента
- 17. Почему Elm.embed принимает только divs?
- 18. jEditable принимает только один идентификатор
- 19. Функция принимает только один вход
- 20. Regex принимает только имена переменных
- 21. Функция die принимает только строки?
- 22. MaskedTextBox принимает только целое число
- 23. socket принимает только определенные адреса?
- 24. ISBN принимает только номера (python)
- 25. Получите половину байта из байта
- 26. Значение байта импорта: значение байта
- 27. Jsoup.connect() принимает() принимает только часть html-файла на Android
- 28. Запись 4 байта шестнадцатеричного от 4 байта
- 29. Как создать текстовое поле, которое принимает только числа и принимает только буквы в WPF?
- 30. Является ли позиция байта байта java независимой?
Читать в петля. Вы не гарантируете (и, скорее всего, не будете), чтобы получить все данные в одном чтении. – Duck
См. Также http://tiny.cc/io (это и некоторые связанные с этим проблемы возникают так часто, что я написал сообщение в блоге) –