2011-03-23 25 views
31

Basit bir bittorrent uygulaması nasıl yazılır. Bir bittorrent kütüphanesi kullanarak bir "merhaba dünya" gibi bir şey, ben bittorrent çalışma anlamak için uygulamanın en basit anlamına gelir. Bir python veya C/C++ uygulamasını tercih ederim, ancak herhangi bir dil olabilir. Platform bir sorun değil, Linux'u tercih ederim.Basit bir Bittorrent uygulaması nasıl yazılır?

Kitaplığın önerileri, bir kaynaktan (ben think official bittorrent) - http://sourceforge.net/projects/bittorrent/develop. Ancak, http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries adresinde başka birçok kitaplık görüyorum. Bu konuda tavsiyelerde bulunmaktan memnun olurum.

Tek bir dizüstü bilgisayarınız varsa, bir uygulamayı nasıl test edersiniz?

+3

Spesifikasyonu okuyunuz (http://wiki.theory.org/BitTorrentSpecification), kod yazınız :-) –

cevap

73

Libtorrent'i (rasterbar) kullanmayı denemelisiniz. http://libtorrent.org

Eğer linux üzerinde, Python müşterinizi yazma ile yüklemek isterseniz:

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' 
: bir sel indirmek için kullanmak piton kod

sudo apt-get install python-libtorrent

Çok basit örnekte

+1

Wow. Gerçekten "kullanımı kolay" hedeflerine ulaşmışlardır. Bu mükemmel bir uygulama! –

+0

Bunun ne olduğunu söyler misin? 'ses.listen_on (6881, 6891)' ve bu değerleri neden? – Gerep

+0

6881 dinleme bağlantı noktasıdır. Bu dinleme portuna bağlanma başarısız olursa, libtorrent bunu birer birer artırmaya çalışacak ve tekrar deneyecektir. 6891'e ulaşana kadar başarısız kalırsa, denemeyi keser ve başarısız olur. hatalar uyarı olarak bildirilir. – Arvid

İlgili konular