Создание DNS-запроса в переполнении стека

Я пытаюсь написать функцию для создания запроса DNS, а затем отправить его на сервер DNS через сокет. Я только добавил соответствующие части кода.

Это работает:

$domain1 = 'example';
$domain2 = 'com';

$data = "\7{$domain1}\3{$domain2}";

Теперь вопрос в том, как мне создать $ data, чтобы длины строк не были жестко закодированы.
Что-то похожее на это (что не работает):

$domain = "example.com";
$bits = explode(".", $domain);
$data = '';
foreach ($bits as $bit) {
$strlen = strlen($bit);
$data .= decoct($strlen) . $bit;
}

Я надеюсь, что объяснил это правильно, поскольку я не совсем уверен, как это работает.

-1

Решение

Вам, вероятно, понадобится пак функция. Эта функция позволяет легко представлять двоичные данные, упакованные в строку PHP. Предполагая, что длина составляет 1 байт каждая (я думаю, что они есть):

$sld = "example";
$tld = "com";
$packed = pack("Ca*Ca*", strlen($sld), $sld, strlen($tld), $tld);

Посмотрите на различные символы формата, чтобы убедиться, что это то, что вам нужно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]