如何使用twisted协议使用UDP协议发送参数

时间:2012-12-23 17:15:04

标签: python twisted bittorrent

如何使用twisted连接到以下网址并获取跟踪器的响应。 ?UDP://tracker.publicbt.com:80 /宣布上传= 0&安培;下载= 0&安培;紧凑= 1&安培;事件=开始&安培;的peer_id = kovid_agarwal1235467&安培;端口= 6881&安培; info_hash = 3389809f0c9096819294a680beb4adb96a738419&安培;左= 763922958

我尝试了以下代码,但我收到了连接ID不匹配错误

from twisted.internet.protocol import DatagramProtocol
from MakeUrlRequest import  encoded_Value


class SendAndReceiveUDP(DatagramProtocol):

    def startProtocol(self):
        self.transport.connect("31.172.124.3",80)
        self.transport.write(encoded_Value())


    def datagramReceived(self, datagram, addr):
        print "Received %r" %datagram
from twisted.internet import reactor
udpclient=SendAndReceiveUDP()
reactor.listenUDP(6881,udpclient)
reactor.run()

在encoded_Value之上只有以下值: 上传= 0&安培;下载= 0&安培;紧凑= 1&安培;事件开始=&安培;的peer_id = kovid_agarwal1235467&安培;端口= 6881&安培; info_hash = 3389809f0c9096819294a680beb4adb96a738419&安培;左= 763922958

1 个答案:

答案 0 :(得分:2)

根据http://en.wikipedia.org/wiki/UDP_tracker,用于与Bittorrent跟踪器交换数据的基于UDP的协议使用“自定义二进制格式”。它看起来不像您发送的数据符合此格式。因此,您收到的错误可能表示您需要以不同方式格式化您的请求。有关该格式的更多详细信息,请参阅http://www.bittorrent.org/beps/bep_0015。html。