⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.py

📁 bittorrent source by python. please enjoy
💻 PY
字号:
# The contents of this file are subject to the BitTorrent Open Source License# Version 1.1 (the License).  You may not copy or use this file, in either# source code or executable form, except in compliance with the License.  You# may obtain a copy of the License at http://www.bittorrent.com/license/.## Software distributed under the License is distributed on an AS IS basis,# WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the License# for the specific language governing rights and limitations under the# License.from struct import pack, unpackdef bucket_stats(l):    """given a list of khashmir instances, finds min, max, and average number of nodes in tables"""    max = avg = 0    min = None    def count(buckets):        c = 0        for bucket in buckets:            c = c + len(bucket.l)        return c    for node in l:        c = count(node.table.buckets)        if min == None:            min = c        elif c < min:            min = c        if c > max:            max = c        avg = avg + c    avg = avg / len(l)    return {'min':min, 'max':max, 'avg':avg}def compact_peer_info(ip, port):    return pack('!BBBBH', *([int(i) for i in ip.split('.')] + [port]))def packPeers(peers):    return map(lambda a: compact_peer_info(a[0], a[1]), peers)def reducePeers(peers):    return reduce(lambda a, b: a + b, peers, '')def unpackPeers(p):    peers = []    if type(p) == type(''):        for x in xrange(0, len(p), 6):            ip = '.'.join([str(ord(i)) for i in p[x:x+4]])            port = unpack('!H', p[x+4:x+6])[0]            peers.append((ip, port, None))    else:        for x in p:            peers.append((x['ip'], x['port'], x.get('peer id')))    return peersdef compact_node_info(id, ip, port):    return id + compact_peer_info(ip, port)def packNodes(nodes):    return ''.join([compact_node_info(x['id'], x['host'], x['port']) for x in nodes])def unpackNodes(n):    nodes = []    for x in xrange(0, len(n), 26):        id = n[x:x+20]        ip = '.'.join([str(ord(i)) for i in n[x+20:x+24]])        port = unpack('!H', n[x+24:x+26])[0]        nodes.append({'id':id, 'host':ip, 'port': port})    return nodes  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -