p2p maison
|
16-03-2013, 20h55
(Modification du message : 16-03-2013, 21h35 par InstinctHack.)
Message : #1
|
|
InstinctHack
Posting Freak Messages : 1,366 Sujets : 184 Points: 299 Inscription : Dec 2011 |
p2p maison
Bonjour,
J'avais soulevé la question il y a quelque chose et visiblement ça inspire creepy_p0ney, donc voilà je fait un petit thread sur ça. JE connait pas le p2p, ce thread n'est QUE ma réflexion sur le sujet d'un système similaire. Comment on prog un truc pareil ? (sujet de réflexion, j'ai pas encore fait) Déjà, il n'y a qu'un seule programme!!! la notion de client-serveur N'EXISTE PAS, on parle de node. (noeud) Donc au début, faut en trouver... et là, c'est pas facile, vu qu'on connait personne et que les serveur n'existe pas. faut donc connaitre un node, et cela est obligatoire (sinon comment faire ? ) Une fois l'ip et le port du node renseigné, on créer un thread pour écouter ce que l'autre node as à nous dire, puis on se présente à lui et on lui demande si il connait pas d'autres node, on gère sa réponse et si elle est positive, on remplis notre base de données. et on tente de se connecte à chacun d'autre eux en ouvrant une nouvelle socket sur un autre port (le premier port doit toujours etre disponible pour la connexion avec d'autre nodes, ce port ne sert qu'a communiquer le numéro de port que l'on vas utilisé par la suite) une fois nos connexion établis, on peux demander aux nodes si quelqu'un possède une ressource (uniquement des fichiers texte pour ce que ça soit plus simple) dont le sha1 est [hash] si quelqu'un (ou plusieurs) répond oui,alors on demande à ce qu'il nous l'envoit, donc l'idée serais qu'il nous réponde le nombre de lignes que le fichier contient et qu'on demande à chaque node qui possède le fichier si il possède cette ligne du fichier, si oui, alors il nous l'envoit, sinon il nous répond false et on lui en demande un autre (on pourrais surement améliorer ce systeme en l'inversant par exemple...) et il faut garder à l'esprit qu'un autre node peut également se connecter à nous pour nous demander à nous si on possède la ressouce et si oui quels bouts Voilà, j'ai sorti tout ça de ma tete, ça fait du bien :p http://fr.wikipedia.org/wiki/Table_de_ha...ibu%C3%A9e Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!" |
|
16-03-2013, 21h12
Message : #2
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
RE: p2p maison
Ben, c'est à peu près ça, a part que:
- tu n'est pas obligé d'avoir un socket ouvert par peer, tu peux aussi utiliser UDP, et spécifier individuellement l'addresse de destination pour chaque message (et recevoir au même endroit les messages de tous les pairs, plutot que d'avoir a faire un select ou du polling sur une pétée de descripteurs) - l'idée de compter le nombre de lignes d'un fichier est totalement superflue. Tu pourrais envoyer la taille en bytes si tu veux préallouer, mais pour la plupart des formats binaires le séparateur de ligne n'a pas de sens. Si les données et les messages de controle sont sur une connexion séparée (donc un socket UDP unique pour le controle, et des connexions TCP éphémères pour le transfert), tu peux utiliser la même technique que le vénérable ftp, a savoir simplement balancer le fichier tel quel dans la connexion tcp, c'est meilleur pour la performance et ça marche tout aussi bien. - pour le problème du boostrap (découverte du premier noeud) effectivement, il n'y a pas de solution, tu es bien obligé d'avoir un point d'accès initial au réseau. Rien ne peut empêcher a coup sur la fragmentation d'un réseau p2p en plusieurs parties qui s'ignorent mutuellement (sauf si tout le monde utilise une ancre commune en dur) - garder en mémoire tous les peers du réseau ne scale pas bien du tout. Il existe plusieurs techniques pour résoudre ce problème. La solution les plus simple est probabiliste (a la gnutella), on ne garde qu'une petite sélection de peers au hasard et on demande aux peers de répéter le message a tous les voisins; ou, on utilise un overlay structuré, dans lequel les peers s'organisent de manière formelle; le plus ancien et le plus facile a comprendre est Pastry, il y a aussi CAN et Kademlia qui utilisent des organisations et des métriques différentes. |
|
17-03-2013, 03h24
Message : #3
|
|
InstinctHack
Posting Freak Messages : 1,366 Sujets : 184 Points: 299 Inscription : Dec 2011 |
RE: p2p maison
Voilà un petit code en python qui pourras servir de base :
J'ai essayer de commenter un peu le truc, mais certaines parties reste dégeu et la gestion d'erreurs est loin d'etre parfaite :') c'est du tcp, je vais rtfm pour udp Code PYTHON :
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!" |
|
17-03-2013, 15h35
(Modification du message : 17-03-2013, 15h36 par Creepy_p0ney.)
Message : #4
|
|
Creepy_p0ney
chef des poneys voodoo Messages : 146 Sujets : 9 Points: 24 Inscription : Dec 2011 |
RE: p2p maison
Penser que coder est coder explique-t-il la recursion ?
http://p0neyland.wordpress.com/ |
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 2 visiteur(s)