Структура ответа от анонсера

Wertos

Пользователь
Дело в том что
unpack('N*',$data['peers']) возвращает массив из которого я получаю правильные IP
а
unpack('Nip/nport',$data['peers']) какой-то 1 неправльный IP с неправильным портом :)
 

Nightmare

Легенда
'N*' говорит о том, что беззнаковый long стоит и указывает только на IP, причем '*' это имя индекса и оператор повторения, то есть если сделать так
$peers = unpack('N*',$data['peers']);
то обращение к определенному элементу массива будет выглядеть как $peers['*'], $peers['*1'],..., $peers['*i']
если формат написать unpack('Nip/nport',$data['peers']), тогда
$peers['ip'], $peers['ip1'],..., $peers['ipi']
$peers['port'], $peers['port1'],..., $peers['porti']
Можно обозвать 'N*/nanythingelse' главное что N - это long, n - short, те форматы, в которые пакует анонсер
и без 'N/n' функция не понимает на что разбивать строку, и выдает только ip так как указан формат N, а если указать 'n', тогда вернет только порт
 

Wertos

Пользователь
$rowset = unpack('Nip/nport',$data['peers']);
var_dump($rowset);
выводит
array(2) { ["ip"]=> int(1370333731) ["port"]=> int(28125) }
это всё....
 
Сверху