2010-04-03 41 views
0

我有一台计算机在端口45000上播种洪流文件。我正在尝试在python(或perl)中编写一个小型客户端,它可以帮助我确定客户端支持的消息类型,我可能需要与客户握手。在Azureus中,这是通过使用像peer.getSupportedMessages()这样的调用完成的。是否有可能使用python或perl中的某个库来完成此操作?与监听端口的Bittorrent客户端通话?

返回的消息的一个例子是这样的:

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

从我可以告诉,支持邮件列表仅仅是由Azureus的支持自定义的握手消息的一部分(可能还有一些Azureus的并且不是官方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"; 

当然,诀窍是在建立一个适当的握手,这将引起从播种机有效响应。不幸的是,我不知道任何只需要做一点编程工作就能做到的事情。