PHPを使ってdhtクローラを作ってみました。データ送信はbencodeを使っているので問題なくエンコード、デコードできますが、find_nodeデータを送信すると取得したデータの中にノードが存在します。 dht プロトコルに従って、構造体のバイナリ ストリームを使用してエンコードされたデータは、20 バイトのノード ID + 4 バイトの IP + 2 バイトのポートです。Python でのエンコードとデコードの方法を見てきましたが、 PHP では変換できません。Python では次のように変換されます。
PHP ではこのように変換できますか? : a20 または A20 スペースが足りない場合は後者を使用
4-byte ip: L ip2long を使用して IP アドレスを符号なし長整数に変換
2-byte port: S $d = unpack('a20nodeid/Lip/Sport', $s);
$d['ip'] = logn2ip(' ip']);
print_r($d); //クリアになります
20バイトのノードID: a20またはA20 スペースで埋めきれない場合は後者を使用してください
4バイトのip: L ip アドレスは、ip2long を使用して符号なし長整数
2 バイトのポートに変換されます。 S
Pack
Unpack
$d = unpack('a20nodeid/Lip/Sport', $s);
$d['ip'] = logn2ip($d['ip'])
print_r($d);ありがとうございます、解決しました