2010-04-03 2 views
0

나는 45000 포트에 토런트 파일을 파종 한 컴퓨터를 가지고있다. 파이썬 (또는 아마도 perl)에서이 클라이언트가 지원해야 할 메시지 유형을 결정하는 데 도움이되는 작은 클라이언트를 작성하려고한다. 클라이언트와 악수. Azureus에서는 peer.getSupportedMessages()와 같은 호출을 사용하여이 작업을 수행합니다. 파이썬이나 펄에서 어떤 라이브러리를 사용하여 이것을 할 수 있습니까?포트에서 수신하는 비트 토 런트 클라이언트와 대화 하시겠습니까?

과 같을 것이다 반환 된 메시지의 예 :

내가 지원 메시지 목록이 Azureus에 의해 지원되는 사용자 정의 핸드 셰이크 메시지의 일부 (그리고 아마도 몇 가지 Azureus를, 무엇을 말할 수에서
BT_KEEP_ALIVE 
BT_PIECE 
BT_REQUEST 
BT_UNCHOKE 
BT_UNINTERESTED 
BT_SUGGEST_PIECE 
BT_HAVE_ALL 
BT_HAVE_NONE 
BT_REJECT_REQUEST 
BT_ALLOWED_FAST 
BT_LT_EXT_MESSAGE 
BT_DHT_PORT 
lt_handshake 
ut_pex 

답변

2

호환 도구)이며 BitTorrent 공식 시스템의 일부가 아닙니다. 그러나 인코딩 된 AZ 핸드 셰이크를 작성하여 시드 자에게 보내고 응답을 디코딩하고 지원되는 메시지가 무엇인지 확인할 수 있습니다.

AZHandshake.java에는 메시지의 모양이 자세히 나와 있습니다. CPAN에서 Bencode 모듈을 사용

, 당신은 같은 것을 할 수있는 : 물론

my $handshake = bencode { 
    identity => '', client => '', ... }; # All fields from AZHandshake.java 

    # send handshake to seeder and get a response 
    my $handshake_response = ... 

    my $dictionary = bdecode $handshake_response; 

    print join "\n", @{$dictionary->{messages}}, "\n"; 

을, 트릭은 씨 뿌리는 사람의 유효한 반응을 유도하는 적절한 핸드 셰이크를 설정하는 것입니다. 불행히도, 나는 약간의 프로그래밍 작업없이이 작업을 수행 할 수있는 것을 모른다.

관련 문제