|
Guest
Сообщений: n/a
Провел на форуме: 1002
Репутация:
0
|
|
Не пойму, почему для любой magnet ссылки количество пиров = 30 (180/6)???
Сообщение от UnknownSource
UnknownSource said:
↑
после "peers180:" просто идет дофига байт. Это пары состоящие из ip-адреса + порта.
ip(4 байта)+порт(2 байта) = 6 байт - занимает каждая пара. а число после peers - это количество последующих байт с этими парами. например, в твоем случае 180=6*30, значит дальше 30 пар
Код HTML:
HTML:
var strBuff = [], length = 0;
//добавляем в массив пришедшие данные+ увеличиваем общую длину пришедших данных
response.on('data', function (chunk) { strBuff.push(chunk); length += chunk.length; });
response.on('end', function () {//когда пересылка закончена
var body = Buffer.concat(strBuff, length); //создаем буфер 16-ти ричных значений из массива пришедших данных
var str = body.toString("ascii");//переводим буфер в ascii
var numPeers = str.slice(str.search("peers") + 5).slice(0, str.search(":") + 1); //страшный парсинг числа пиров ( =180)
var peerCount = numPeers / 6; // 180/6 = 30
var bPeers = bencode.decode(str).peers;//получам список пиров( от библиотеки bencode( не работает с utf8 :( ))
var peers = group(body.slice(body.length - numPeers), 6).map(function (address) {//групируем байты в буфере по 6 и для каждой группы вызываем функцию( ниже)
return {//возвращаем
address: address,//сам буффер
ip: address.slice(0, 4).join('.'),//переводим каждый байт в 10-ную систему+соединяем в строку с разделителм '.': байты с [0,1,2,3] - это ip
port: address.readUInt16BE(4)//получаем беззнаковое целое 2-х байтовое число - это порт
}
});
console.log(peers); //вывод в консоль
});
Вот код, который выводит:
Код:
Code:
[
{ address: ,
ip: '108.169.22.64',
port: 45317 },
{ address: ,
ip: '144.110.162.178',
port: 19122 },
{ address: ,
ip: '155.5.193.216',
port: 1794 },
{ address: ,
ip: '93.143.227.53',
port: 42162 },
{ address: ,
ip: '168.129.139.191',
port: 52050 },
{ address: ,
ip: '198.175.77.243',
port: 39245 },
{ address: ,
ip: '222.118.156.195',
port: 28462 },
{ address: ,
ip: '147.14.55.139',
port: 14524 },
{ address: ,
ip: '243.139.32.65',
port: 61791 },
{ address: ,
ip: '79.185.73.89',
port: 19789 },
{ address: ,
ip: '222.113.33.137',
port: 6578 },
{ address: ,
ip: '140.37.131.34',
port: 24671 },
{ address: ,
ip: '153.132.149.194',
port: 26463 },
{ address: ,
ip: '55.180.217.200',
port: 61785 },
{ address: ,
ip: '23.191.110.48',
port: 28594 },
{ address: ,
ip: '16.148.1.214',
port: 42580 },
{ address: ,
ip: '23.59.125.209',
port: 15455 },
{ address: ,
ip: '183.116.25.216',
port: 33364 },
{ address: ,
ip: '52.43.36.227',
port: 24157 },
{ address: ,
ip: '73.96.253.67',
port: 5215 },
{ address: ,
ip: '66.218.96.213',
port: 62099 },
{ address: ,
ip: '30.74.59.62',
port: 20047 },
{ address: ,
ip: '165.123.28.56',
port: 25951 },
{ address: ,
ip: '84.183.248.95',
port: 58885 },
{ address: ,
ip: '18.235.180.178',
port: 18975 },
{ address: ,
ip: '185.4.145.155',
port: 24671 },
{ address: ,
ip: '29.96.176.54',
port: 50523 },
{ address: ,
ip: '219.101.72.235',
port: 16421 },
{ address: ,
ip: '203.10.124.210',
port: 28709 },
{ address: ,
ip: '212.255.11.95',
port: 18789 }
]
Если смотреть в uTorrent, на вкладке "пиры"- этих адресов там нет; DHT специально отключил.
|