Мне нужно реализовать систему промежуточного программного обеспечения для совместного использования файлов, и она должна разделить файлы, не похожие на то, что происходит на bittorrent, где он отправляет и получает отдельные части одновременно из источников varios. Как мне это сделать? Это библиотека или я должен реализовать файл, разбивающий себя?разделяющие файлы для приложения P2P
ответ
Разделить файлы на блоки, скажем, 100 КБ каждый. Затем вычислите SHA-хэш (или какой-либо другой алгоритм хеширования) на каждом из блоков. поэтому, если файл 905 КБ, вы бы рассчитали 10 таких хэшей.
Сервер будет содержать файл определения хэша для каждого файла, который он обслуживает. Этот файл определения хеширования будет содержать список всех блоков файла вместе с хешем. Поэтому, если сервер обслуживает наш 905KB-файл с именем test.exe. Тогда у нас будет еще один файл с именем test.exe.hashes, который содержит список из 10 хэшей файла.
Клиент будет загружать файл определения хэша и следить за тем, чтобы он имел все блоки. Клиент может запросить каждый блок по отдельности и после его загрузки, он может снова вычислить хэш на своем конце, чтобы убедиться, что нет никакого искажения.
Вам не нужно физически разделять файл, разделяя файл, просто просматривая его часть, которая вас интересует. Первый блок файла находится в диапазоне от 0 до 102399, следующий блок от 102400 до 204800 и т. Д. Поэтому просто откройте файл, найдите эту позицию, прочитайте данные и закройте файл.
Посмотрите на реализацию Split & Concat (программное обеспечение GNU).
хорошая идея, спасибо! – 2008-09-30 19:48:11
Возможно, вы захотите использовать кодировку Соломона-Рида. Это облегчит получение финальных блоков. Это маршрут, который Microsoft взяла в Avalaunch.
Из интереса: Почему бы просто не реализовать BitTorrent или что-то в этом роде? Существует много клиентов OpenSource (т. Е. Azureus), а протокол - really simple. Существует также an article with a little more detail, но в нем есть некоторые расширения - в сомнении, официальная спецификация всегда правильная.
- 1. Программирование приложения P2P
- 2. Приложения с витыми и p2p
- 3. Написание простого приложения чата P2P
- 4. проблемы, разделяющие класс и исходные файлы
- 5. Как проверить приложения iphone p2p?
- 6. Два приложения с рельсами, разделяющие папку модели
- 7. Как отправить файлы с помощью WCF P2P
- 8. Тестирование приложения P2P в реальном времени
- 9. P2P библиотека для C++
- 10. Запись приложения чата P2P в Python
- 11. Как приложения P2P находят другие узлы?
- 12. , разделяющие верхние и нижние колонтитулы в свои собственные файлы
- 13. AngularJS и аналитика - разделяющие проблемы
- 14. Как скачать файлы, используя OFF (Владелец бесплатной файловой системы) P2P?
- 15. open source java framework для P2P
- 16. Как разделяющие настройки приложения между несколькими Azure сайтов
- 17. Элементы RDD, разделяющие PySpark
- 18. P2P File Transfer C#
- 19. Приложение для обмена файлами P2P
- 20. P2P чат-клиент для андроида
- 21. .NET и P2P - написание сообщения P2P
- 22. p2p видеоконференция
- 23. Java-формы, разделяющие границы
- 24. Неполадки, разделяющие данные равномерно?
- 25. Python удаляет разделяющие пространства
- 26. 2 действия, разделяющие макет
- 27. для петель правых треугольников не разделяющие
- 28. Android app p2p GPS
- 29. p2p долгосрочное хранение
- 30. IPhone P2P - проблема с подключением p2p, когда 3 iphones ищут
фантастический, спасибо за ответ! – 2008-09-30 19:42:14