Я понял, что не передавал $objPage в page_properties () . Это хорошо работает теперь.
Наконец-то я понял это.
send(Domain) ->
{ok,S} = gen_udp:open(5555,[{reuseaddr,true}, {ip,{224,0,0,251}}, {multicast_ttl,4}, {multicast_loop,false}, {broadcast,true}, binary]),
P = #dns_rec{header=#dns_header{},qdlist=[#dns_query{domain=Domain,type=ptr,class=in}]},
gen_udp:send(S,{224,0,0,251},5353,inet_dns:encode(P)),
gen_udp:close(S).
Как объяснил Магнус в списке рассылки вопросов Erlang:
вы передавали dns_query вместо записи dns_rec в функции encode / 1.
Тот факт, что для модуля inet_dns нет документации, должен заставить вас очень осторожно использовать его в своем коде. Я надеюсь, вы полностью осведомлены о том, что ваш проект не будет рассматриваться, если они (группа OTP) захотят изменить способ реализации и использования модуля.
Прочтите код для идей реализации или просто приступайте к созданию Сообщение протокола DNS с использованием битового синтаксиса Erlang на основе RFC протокола DNS. Создать пакет DNS намного проще, чем его анализировать (я сам шел по этому пути, и «хитрые уловки» для минимизации размера пакета вряд ли того стоят).