Torrent应用程序中的对等连接速率

时间:2016-12-13 14:36:18

标签: python tcp connection python-3.5 torrent

我一直在使用像python中的popcorn时间这样的torrent应用程序已经有一段时间了,并且它运行得很好。我曾经遇到过与同行相关的一些问题。

我从DHT,UDP / HTTP Tracker或PeerExchange获得的大约90%的同伴都无法访问.. 我尝试连接,但它只是告诉我它拒绝连接。这是预期的行为吗?我知道同伴可能处于脱机状态,但90%很多。 这意味着我需要100个潜在的同伴,在尝试所有之后可能有10个连接。这并不对应于例如uTorrent,它可能有13个潜在的同伴并连接到其中的10个。

以防你们认为它可能与我的连接方法或解析响应有关; 连接方法:

def connect(self):
    try:
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.settimeout(self.con_timeout)
        self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.socket.connect((self.host, self.port))
        return True
    except (socket.timeout, ConnectionRefusedError, ConnectionAbortedError,    ConnectionResetError, OSError):
        return False

Ip / port解析:

def uri_from_bytes(data):
    ip = socket.inet_ntop(socket.AF_INET, data[0: 4])
    offset, port = read_ushort(data, 4)
    return 'tcp://' + ip + ":" + str(port)

def read_ushort(buffer, offset):
    ushort = struct.unpack_from('!H', buffer, offset)
    offset += 2
    return offset, ushort[0]

如果有人有开发torrent客户端的经验,或者只是想知道可能出现什么问题;感谢帮助!

0 个答案:

没有答案