Я пытаюсь отправить структуру дерева каталогов через TCP. Дерево возможно в подкаталогах. Я не хочу отправлять фактическое содержимое, но более или менее отправляю листинг в один поток байтов. Каков наилучший способ сделать это?Каков наиболее эффективный способ передачи дерева каталогов через tcp? C++
ответ
Я думаю, что ваш лучший выбор для эффективности (я собираюсь предположить, что вы хотите, чтобы вы искали решение, которое потребует отправки небольшого количества байтов относительно других решений), читаемость и переносимость - это что-то вроде JSON ,
{"dir":"/","children":
[{"dir":"bin","children":
[{"file":"bash"},
{"file":"csh"}]
},
{"dir":"home","children":null}]}
«Лучший» имеет множество интерпретаций в зависимости от сценария. Если вы можете подтвердить формат, который упростит ваши клиенты (приемники TCP) использовать ваши данные, то это, вероятно, хорошая идея.
Как правило, я считаю, что лучше всего быть наиболее понятным способом. Например, представление XML было бы хорошо, потому что XML повсюду - все это знают (или должны). Есть миллион библиотек COTS, которые его обрабатывают, и хорошо известны.
XML также по своей сути может содержать объекты, содержащие другие сущности, и по умолчанию имеет родительский/дочерний элементы между узлами, поэтому формат будет очень хорошо отражать структуру каталогов.
Недостатком xml является то, что он очень подробный. Вы могли бы построить формат плоского файла, который был бы намного меньше, если вы захотите справиться с дополнительной сложностью (и размер камеры на самом деле имеет значение в сетевом приложении). Если вы собираетесь использовать представление с плоским файлом, подумайте о том, как вы структурируете данные в одной таблице базы данных (имя, файл/папка, родительский каталог и т. Д.).
Чтобы отправить дерево, просто рекурсивно выполнить следующие действия:
Отправить корень, а затем его детей.
- 1. Каков наиболее эффективный способ передачи значений клиентам в C#
- 2. Каков наиболее эффективный способ хранения структуры данных дерева в MongoDB?
- 3. Каков наиболее эффективный способ создания несортированного двоичного дерева в java?
- 4. Каков наиболее эффективный способ передачи данных на PHP и JavaScript?
- 5. Каков наиболее эффективный способ упорядочения C++-структур на C#?
- 6. Каков наиболее эффективный способ генерации матрицы данных через json-файл?
- 7. Каков наиболее эффективный способ сортировки NSSet?
- 8. Каков наиболее эффективный способ создания отчета?
- 9. Каков наиболее эффективный способ хранения маяков аналитики?
- 10. Каков наиболее эффективный способ реализовать это параллельно?
- 11. Каков наиболее эффективный способ анализа непоследовательных адресов?
- 12. Каков наиболее эффективный способ выполнения логических операций в C# .NET?
- 13. Каков наиболее эффективный способ инициализации 3D-вектора?
- 14. Самый эффективный способ передачи файлов по TCP
- 15. Каков наиболее эффективный способ отправки объекта через поток Socket?
- 16. Каков наиболее эффективный способ доступа к java-методам из C++
- 17. Каков наиболее эффективный способ хранения этих данных?
- 18. Каков наиболее эффективный способ форматирования следующей строки?
- 19. Каков наиболее эффективный способ обработки «hg import»?
- 20. Каков наиболее эффективный способ переназначения структуры?
- 21. Каков наиболее эффективный способ переопределить Bootstrap css?
- 22. Каков наиболее эффективный способ организовать множество методов?
- 23. Каков наиболее эффективный способ сохранения HashMap?
- 24. Каков наиболее эффективный способ добавления метаданных schema.org
- 25. Каков наиболее эффективный способ печати связанного списка?
- 26. Каков наиболее эффективный способ получить результаты Elasticsearch?
- 27. Каков наиболее эффективный способ выполнения этого кода?
- 28. Каков наиболее эффективный способ синхронизации двух datagridviews?
- 29. Каков наиболее эффективный способ перенаправления запросов?
- 30. Каков наиболее эффективный способ обрезать эту таблицу?
Определите «наилучший» .. –
Задайте себе вопрос: какой эффективный способ собрать это дерево в массив байтов. После этого было бы легко. –
Я бы не согласился с этим. Ему нужно будет беспокоиться о контенте, упаковке байта и т. Д., Если он использует байтовый буфер для передачи. Это прекрасно, если он это понимает, хотя :) это, безусловно, будет самым эффективным способом измерения размера данных. –