Я пытаюсь отправить много данных (в основном записи данных, преобразованные в строку) через сокет и замедляя работу остальной части моей программы. Можно ли сжимать данные с помощью gzip и т. Д. И расстегнуть их на другом конце?сжимающий сокет отправить данные
ответ
Да, но сжатие и декомпрессия также имеют свои издержки.
Возможно, вы захотите рассмотреть возможность использования другого процесса или потока для обработки передачи данных; это, вероятно, сложнее, чем просто сжатие, но будет лучше масштабироваться, когда ваша загрузка данных увеличивается в n раз.
Проблема в том, что сервер генерирует данные очень быстро, а сокет является основным узким местом. Если я не уменьшу время, затраченное на передачу сокета, это действительно повлияет на мою производительность – aks
Конечно, вы можете это сделать. При отправке двоичных данных вы должны заботиться о endiannes платформы.
Однако вы уверены, что проблемы с производительностью будут решены путем сжатия переданных данных? У вас все еще есть дополнительные шаги (сжатие/декомпрессия, возможно, решение проблем с Endiannes).
Подумайте, как осуществляется соединение через сокеты. Используете ли вы синхронную или асинхронную связь. Если вы читаете и записываете синхронно, вы можете почувствовать нарушения производительности ...
Да, это возможно. zlib - это одна библиотека для такого сжатия и декомпрессии. Однако вам может быть лучше обслуживаться путем сериализации ваших записей данных в двоичном формате, а не как строка; что должно улучшить производительность, возможно даже больше, чем при использовании сжатия.
Да. Самый простой способ реализовать это - использовать библиотеку venerable zlib
.
Функции утилиты compress()
и uncompress()
могут быть такими, какие вы есть.
Вы можете использовать ADOC библиотеку прозрачно перегружать систему сокета вызывает
http://www.labri.fr/perso/ejeannot/adoc/adoc.html
Это делает сжатие на лету, если он считает, что это было бы выгодно.
- 1. отправить данные в конкретный сокет
- 2. C# сокет отправить данные несоответствия данных сервера
- 3. Android TCP отправить данные корыта один сокет
- 4. Как отправить данные изображения через сокет linux
- 5. Как отправить данные XML через сокет InputStream
- 6. Как отправить данные в конкретный сокет
- 7. C# сокет отправить файл
- 8. Отправить объект через сокет
- 9. Отправить файл в сокет
- 10. Отправить объект через сокет
- 11. C ошибка # сокет отправить
- 12. Сокет отправить вопрос
- 13. отправить arraylist через сокет
- 14. отправить zip-файл через сокет
- 15. Python сокет отправить не отправить всю строку
- 16. Java отправить скриншот через сокет
- 17. бутстрап хорошо сжимающий контент слева
- 18. «Требуется адрес назначения» при попытке отправить данные через сокет SOCK_RAW
- 19. Отправить/получить данные через сокет используя python и ctype Структура
- 20. Как загрузить и отправить двоичные данные через сокет на iOS?
- 21. Необходимо отправить непрерывные данные строки изображения через сокет через iPhone
- 22. Как отправить данные через UDP-сокет при его написании?
- 23. Как я могу отправить все данные через сокет?
- 24. java: Отправить метод через сокет
- 25. Отправить сериализованный объект через сокет
- 26. Python отправить cmd на сокет
- 27. отправить файл сокет C linux
- 28. Отправить wav файлы через сокет
- 29. openresty на body_filter_by_lua отправить сокет
- 30. Как отправить canvas.Children через сокет?
Вы всегда можете обрабатывать сжатие/декомпрессию в прикладном уровне. – vrdhn