ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: razer en Agosto 16, 2008, 02:20:27

Título: Cliente de Torrent
Publicado por: razer en Agosto 16, 2008, 02:20:27
Hola estoy programando un cliente de torrent en Java.
Mi duda basicamente no es de programacion, sino de entender con exactitud algunas cuestiones del protocolo bittorrent.

No puedo aun armar correctamente el contenido del parametro info_hash, asi como tambien luego poder interpretar las listas de IPs de los peers.
Ya he leido y sigo leyendo como funciona esto, pero no sale. Alguien hizo algo al respecto para poder ayudarme en algunas cuestiones sobre esto ?

Quien haya hecho, postee asi le paso mi MSN y seguimos por ahi !!!

GRACIAS.-
Título: Re: Cliente de Torrent
Publicado por: Camello_AR en Agosto 16, 2008, 16:06:05
No analizaste algun cliente ya hecho, el azureus es open y java, como para poder guiarte

http://azureus.sourceforge.net/
Título: Re: Cliente de Torrent
Publicado por: razer en Agosto 16, 2008, 18:11:36
Ya me lo baje pero no se entiende bien, ademas no es mi intencion afanar codigo  :)
Lo estoy haciendo por hobbie nomas, y me interesa aprender..... nadie sabe bien como funciona para evacuarme unas duditas? saludos
Título: Re: Cliente de Torrent
Publicado por: Camello_AR en Agosto 16, 2008, 18:30:36
no es afanar código, gracias al open spurce y a los repositorios publicos, los foros (antes de papel, luego en bbs y en usenet, ahora en internet) es donde se aprende sobre el uso de funciones y como hacer cosas, muchas veces tratando de hacer alguna aplicación (el 95% por hobbie y para probar) tenía que mirar alguna aplicación similar para ver como resolvian algo
Título: Re: Cliente de Torrent
Publicado por: brun en Agosto 16, 2008, 18:37:33
Cita de: Camello_AR en Agosto 16, 2008, 18:30:36
no es afanar código, gracias al open spurce y a los repositorios publicos, los foros (antes de papel, luego en bbs y en usenet, ahora en internet) es donde se aprende sobre el uso de funciones y como hacer cosas, muchas veces tratando de hacer alguna aplicación (el 95% por hobbie y para probar) tenía que mirar alguna aplicación similar para ver como resolvian algo

Exacto. Sería como "aprender de los otros", sin esos otros presentes, pero aprendiendo al fin.
Título: Re: Cliente de Torrent
Publicado por: razer en Agosto 16, 2008, 18:49:05
Entiendo. Es que me he bajado el codigo hace un tiempo de hecho, pero se me hace bastante complicado entenderlo, nadie sabe nada de aqui ? Saludos!
Título: Re: Cliente de Torrent
Publicado por: snoop en Agosto 16, 2008, 19:49:42
Hola razer,
te paso un par de direcciónes que te pueden ayudar para entender este protocolo desarrollado por Bram Cohen:
- Index of BitTorrent Enhancement Proposals (http://bittorrent.org/beps/bep_0000.html) lo que vos buscas creo que está en el punto 3 (Official BitTorrent Specification).
- BitTorrentSpecification - TheoryOrg (http://wiki.theory.org/BitTorrentSpecification).
- Grupo Yahoo sobre el protocolo BitTorrent (http://tech.groups.yahoo.com/group/BitTorrent/).

La idea de que sea opensource no es "afanar" código sino tener el código para poder analizarlo, estudiarlo y aprender :D
Te recomiendo que te bajes el source de BitTorrent mainline (el oficial), o el del ABC (que utiliza una versión vieja del oficial, sin DHT y otras yerbas añadidas en las últimas versiones). Están en Phyton y son bastante "entendibles".

Para lo que necesitas creo que vas a necesitar un buen manejo de cadenas de texto (strings) y tener en cuenta lo siguiente:
Cita de: http://bittorrent.org/beps/bep_0003.htmlThe connectivity is as follows:

    * Strings are length-prefixed base ten followed by a colon and the string. For example 4:spam corresponds to 'spam'.
    * Integers are represented by an 'i' followed by the number in base 10 followed by an 'e'. For example i3e corresponds to 3 and i-3e corresponds to -3. Integers have no size limitation. i-0e is invalid. All encodings with a leading zero, such as i03e, are invalid, other than i0e, which of course corresponds to 0.
    * Lists are encoded as an 'l' followed by their elements (also bencoded) followed by an 'e'. For example l4:spam4:eggse corresponds to ['spam', 'eggs'].
    * Dictionaries are encoded as a 'd' followed by a list of alternating keys and their corresponding values followed by an 'e'. For example, d3:cow3:moo4:spam4:eggse corresponds to {'cow': 'moo', 'spam': 'eggs'} and d4:spaml1:a1:bee corresponds to {'spam': ['a', 'b']}. Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics).


Saludos  :up: