2011-03-23 2 views
31

간단한 비트 토 런트 응용 프로그램을 작성하는 방법. 비트 토 런트 라이브러리를 사용하는 "안녕하세요 세상"과 같은 것입니다. 비트 토 런트 작업을 이해하는 가장 간단한 응용 프로그램입니다. 파이썬이나 C/C++ 구현을 선호하지만, 어떤 언어라도 될 수 있습니다. 플랫폼도 문제가 아니지만 리눅스를 선호합니다.간단한 BitTorrent 응용 프로그램을 작성하는 방법은 무엇입니까?

라이브러리에 대한 권장 사항은 다음과 같습니다 (공식 비트 토 런트라고 생각합니다) - http://sourceforge.net/projects/bittorrent/develop에 대한 소스 코드를 다운로드했습니다. 하지만 http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries에 다른 많은 라이브러리가 있습니다. 이것에 대한 권장 사항을 고맙게 생각합니다.

보유하고있는 응용 프로그램이 모두 하나 인 경우 응용 프로그램을 테스트하는 방법.

+3

spec (http://wiki.theory.org/BitTorrentSpecification)을 읽고 코드를 작성하십시오 :-) –

답변

73

libtorrent (rasterbar)를 사용해보십시오. http://libtorrent.org

당신이 리눅스에, 파이썬에서 클라이언트를 쓰기로를 설치하려면 :

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' 
: 급류를 다운로드하는 데 사용하는 파이썬 코드의

sudo apt-get install python-libtorrent

아주 간단한 예

+1

와우. 그들은 "사용하기 쉽다"라는 목표를 실제로 달성했습니다. 이것은 훌륭한 구현입니다! –

+0

이 일이 무엇인지 말해 줄 수 있습니까? 'ses.listen_on (6881, 6891)'과 왜 그 값들을? – Gerep

+0

6881은 수신 포트입니다. 해당 수신 대기 포트에 대한 바인딩이 실패하면 libtorrent는 해당 수신 포트를 1 씩 증가시키고 다시 시도합니다. 6891에 도달 할 때까지 계속 실패하면 시도를 멈추고 실패합니다. 오류는 경고로보고됩니다. – Arvid