Je dois implémenter un système de middleware pour le partage de fichiers, et il doit scinder les fichiers comme ce qui se passe sur bittorrent, où il envoie et reçoit des pièces séparées simultanément à partir de sources varios. Comment je fais ça? Est-ce une bibliothèque ou dois-je implémenter le fichier moi-même?scinder des fichiers pour une application P2P
Répondre
Divisez les fichiers en blocs, disons de 100 Ko chacun. Puis calculer un hachage SHA (ou un autre algorithme de hachage) sur chacun des blocs. donc si le fichier est 905KB, vous auriez 10 de ces hachages calculés.
Le serveur contiendrait un fichier de définition de hachage pour chaque fichier qu'il sert. Ce fichier de définition de hachage contient une liste de tous les blocs du fichier, ainsi que le hachage. Donc, si le serveur sert notre fichier de 905 Ko appelé test.exe. Ensuite, nous aurions un autre fichier appelé test.exe.hashes qui contient une liste des 10 hachages du fichier.
Le client téléchargerait le fichier de définition de hachage et s'assurerait qu'il possède tous les blocs. Le client peut demander chaque bloc individuellement et après le téléchargement, il peut à nouveau calculer le hash pour s'assurer qu'il n'y a pas de corruption. Vous n'avez pas besoin de diviser physiquement le fichier, la division d'un fichier consiste simplement à lire la partie qui vous intéresse. Le premier bloc du fichier est de la plage d'octets 0 à 102399, le bloc suivant est de 102400 à 204800, et ainsi de suite. Il suffit donc d'ouvrir le fichier, de rechercher cette position, de lire les données et de fermer le fichier.
Regardez l'implémentation de Split & Concat (logiciel GNU).
bonne idée, merci! –
Vous pourriez envisager d'utiliser le codage Solomon-Reed. Cela rendra les derniers blocs beaucoup plus faciles. C'est la route empruntée par Microsoft à Avalaunch.
Pas d'intérêt: Pourquoi ne pas simplement implémenter BitTorrent ou quelque chose comme ça? Il existe de nombreux clients OpenSource (c'est-à-dire Azureus) et le protocole est really simple. Il y a aussi an article with a little more detail, mais cela contient quelques extensions - en cas de doute, la spécification officielle est toujours correcte.
- 1. p2p visioconférence
- 2. Stratégie de classement des documents pour le système de partage de fichiers P2P
- 3. Comment scinder le plugin jQuery sur plusieurs fichiers
- 4. Hibernate mappings: Scinder le fichier
- 5. Applications torsadées et p2p
- 6. Comment implémenter P2P en C#?
- 7. les meilleures ressources pour s'impliquer dans le projet de partage de fichiers p2p
- 8. java p2p vidéothèque?
- 9. Scinder les chaînes en JavaScript
- 10. expression régulière pour scinder la phrase de recherche
- 11. Où dois-je générer des fichiers temporaires pour mon application?
- 12. où stocker des fichiers multimédia dans une application iPhone
- 13. Upload/Télécharger des fichiers volumineux dans une application web
- 14. Comment partager des données entre une application C++ et une application C# sans fichiers?
- 15. Pour définir des variables d'environnement pour une application Web Python
- 16. Existe-t-il une fonction en Python pour scinder une chaîne sans ignorer les espaces?
- 17. Scinder une chaîne en deux caractères dans Ruby
- 18. Recherche des fichiers de vidage sur incident pour une application C#
- 19. Comment créer un réseau virtuel pour une application
- 20. Structure de données pour scinder plusieurs fois une chaîne en parties plus petites
- 21. Fichiers d'installation .NET .application
- 22. comment démarrer dans la programmation réseau p2p?
- 23. Des pratiques correctes pour savoir où placer des images et des fichiers statiques dans une application ASP.NET MVC?
- 24. Scala: scinder une liste en utilisant un prédicat pour les sous-listes
- 25. Gestion de documents pour une application
- 26. Meilleures pratiques pour appliquer des modifications à une application SharePoint
- 27. Où placer des fichiers javascript spécifiques à une vue dans une application ASP.NET MVC?
- 28. Interface utilisateur pour une application de bureau
- 29. Emballage de certains fichiers avec une application Flex/Flash?
- 30. .hgignore pour une application CakePHP?
fantastique, merci pour la réponse! –