2011-03-23 14 views
31

Cómo escribir una aplicación de bittorrent simple. Algo así como un "mundo de hola" usando una biblioteca de bittorrent, me refiero a la aplicación más simple para entender el funcionamiento de bittorrent. Preferiría una implementación python o C/C++, pero puede ser cualquier idioma. La plataforma tampoco es un problema, pero preferiría Linux.¿Cómo escribir una aplicación Bittorrent simple?

Recomendaciones para la biblioteca a seguir, he descargado el código fuente de uno (creo que bittorrent oficial) desde - http://sourceforge.net/projects/bittorrent/develop. Pero, veo muchas otras bibliotecas en http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries. Agradecería las recomendaciones sobre esto.

Cómo probar una aplicación si todo lo que tiene es una sola computadora portátil.

+3

Lea la especificación (http://wiki.theory.org/BitTorrentSpecification), escriba el código :-) –

Respuesta

73

Debería probar libtorrent (barra de trama). http://libtorrent.org

Si desea escribir a su cliente en python, en Linux, instalarlo con:

sudo apt-get install python-libtorrent

Un ejemplo muy simple de código Python para utilizarlo para descargar un torrente:

import libtorrent as lt 
import time 
import sys 

ses = lt.session() 
ses.listen_on(6881, 6891) 

info = lt.torrent_info(sys.argv[1]) 
h = ses.add_torrent({'ti': info, 'save_path': './'}) 
print 'starting', h.name() 

while (not h.is_seed()): 
    s = h.status() 

    state_str = ['queued', 'checking', 'downloading metadata', \ 
     'downloading', 'finished', 'seeding', 'allocating', 'checking fastresume'] 
    print '\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \ 
     (s.progress * 100, s.download_rate/1000, s.upload_rate/1000, \ 
     s.num_peers, state_str[s.state]), 
    sys.stdout.flush() 

    time.sleep(1) 

print h.name(), 'complete' 
+1

Wow. Realmente lograron su objetivo de "fácil de usar". ¡Esta es una excelente implementación! –

+0

¿Me puede decir qué está haciendo? 'ses.listen_on (6881, 6891)' y ¿por qué esos valores? – Gerep

+0

6881 es el puerto de escucha. Si el enlace a ese puerto de escucha falla, libtorrent intentará incrementarlo en uno e intentar nuevamente. Si sigue fallando hasta que llegue a 6891, dejará de intentarse y simplemente fallará. los errores se informan como alertas. – Arvid

Cuestiones relacionadas