2012-02-18 66 views
1

我试图做一个简单的查询到DHT服务器。查询DHT服务器

我试图做一个简单的简单的例子来测试查询到服务器,但我没有得到任何形式的服务器响应...

小例子:

$socket = fsockopen("udp://router.bittorrent.com", 6881, $errno, $errstr, 3); 
fwrite($socket, 'p'); $Head = fread($socket, 4); 
$CheckStatus = socket_get_status($socket);  
if($CheckStatus["unread_bytes"] == 0) 
{ 
    return 0; 
} 
$do = 1; 
while($do) 
{ 
    $str = fread($socket,1); 
    $stats .= $str; 
    $status = socket_get_status($socket); 
    if($status["unread_bytes"] == 0) 
    { 
     $do = 0; 
    } 
} 
fclose($socket); 

有关在DHT服务器中查询的信息,请单击此处:http://www.bittorrent.org/beps/bep_0005.html#dht-queries

但我不明白如何使用PHP进行此操作。 这可能吗?我的代码有什么问题?

+0

任何DHT洪流querry例子吗? – Zenth 2012-02-20 17:06:47

+1

我建议不要使用PHP来处理这类事情,它不适合用于处理bittorrent kademlia实现中使用的二进制数据。至于你的查询,'p'不是一个有效的bencoded DHT请求 – the8472 2012-08-01 21:43:29

回答

1

由于the8472提到,您的客户端发送p,这不是有效的查询。要查看有效的查询格式,请看这里:这里bep 005