我想使用udp跟踪器进行通信并向其发送连接请求。
为此我必须首先在php中创建一个16字节的变量并将其发送给跟踪器。
请求变量结构:
首先将其设为64位0x41727101980,将32位设为0。
生成一个32位无符号整数作为随机数,然后将生成的数字添加到变量的末尾。
最后,我的变量的大小应该是128位,等于16个字节。
我用这种方式:
$a = time();
$connect_request = 0x41727101980;
$connect_request .= 0x00000000;
$connect_request .= $a;
var_dump($connect_request);
但结果是:
string '449748612544001413719239' (length=24)
这是24字节而不是16字节。
我现在必须做什么?
答案 0 :(得分:0)
你有什么数字。
试试这个:
$connect_request = pack("N*",0x417,0x27101980,0,time());
如果您使用的是PHP 5.6,则可以使用pack("JN*", 0x41727101980, 0, time())
,允许直接使用64位数字,但是否则您需要手动将大数字分成两个较小的数字(每个32位,因此第二个0x...
有八个六角形。)
这会将输入打包成所需长度的字符串,在本例中为128位或24字节。